public static NonEscapedString AtomRender(HtmlHelper helper, IDictionary <string, string> stateData) { var builder = new StringBuilder(); if (stateData.ContainsKey(nameof(AtomCreatedState.AtomId))) { var atomId = stateData[nameof(AtomCreatedState.AtomId)]; builder.Append("<dl class=\"dl-horizontal\">"); builder.Append("<dt>Atom details:</dt>"); builder.Append($"<dd>{helper.AtomLink(atomId)}</dd>"); builder.Append("</dl>"); } if (stateData.ContainsKey(nameof(SubAtomCreatedState.ContinuationOptions))) { var continuationOption = stateData[nameof(SubAtomCreatedState.ContinuationOptions)]; builder.Append("<dl class=\"dl-horizontal\">"); builder.Append("<dt>Atom progress:</dt>"); builder.Append($"<dd><code>{continuationOption}</code></dd>"); builder.Append("</dl>"); } if (stateData.ContainsKey(nameof(SubAtomCreatedState.NextState))) { var state = JsonUtils.Deserialize <IState>(stateData[nameof(SubAtomCreatedState.NextState)]); builder.Append("<dl class=\"dl-horizontal\">"); builder.Append("<dt>Next state:</dt>"); var stateColor = JobHistoryRenderer.GetForegroundStateColor(state.Name); builder.Append($"<dd><span class=\"label label-default\" style=\"background-color: {stateColor};\">{state.Name}</span></dd>"); builder.Append("</dl>"); } return(new NonEscapedString(builder.ToString())); }
/// <summary> /// Configures Hangfire to use Console. /// </summary> /// <param name="configuration">Global configuration</param> /// <param name="options">Options for console</param> public static IGlobalConfiguration UseConsole(this IGlobalConfiguration configuration, ConsoleOptions options = null) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } options = options ?? new ConsoleOptions(); options.Validate(nameof(options)); // register server filter for jobs GlobalJobFilters.Filters.Add(new ConsoleServerFilter(options)); // replace renderer for Processing state JobHistoryRenderer.Register(ProcessingState.StateName, new ProcessingStateRenderer(options).Render); // register dispatcher to serve console updates DashboardRoutes.Routes.Add("/console/([0-9a-f]{11}.+)", new ConsoleDispatcher(options)); // register additional dispatchers for CSS and JS var assembly = typeof(ConsoleRenderer).GetTypeInfo().Assembly; DashboardRoutes.Routes.Append("/js[0-9]{3}", new EmbeddedResourceDispatcher(assembly, "Hangfire.Console.Resources.resize.min.js")); DashboardRoutes.Routes.Append("/js[0-9]{3}", new DynamicJsDispatcher(options)); DashboardRoutes.Routes.Append("/js[0-9]{3}", new EmbeddedResourceDispatcher(assembly, "Hangfire.Console.Resources.script.js")); DashboardRoutes.Routes.Append("/css[0-9]{3}", new EmbeddedResourceDispatcher(assembly, "Hangfire.Console.Resources.style.css")); DashboardRoutes.Routes.Append("/css[0-9]{3}", new DynamicCssDispatcher(options)); return(configuration); }
private static void SetupDashboard() { // Atoms DashboardRoutes.Routes.AddRazorPage("/jobs/atoms", x => new AtomsPage()); DashboardRoutes.Routes.AddClientBatchCommand("/jobs/atoms/delete", (client, jobId) => client.Delete(jobId)); DashboardRoutes.Routes.AddRazorPage("/jobs/atoms/(?<JobId>.+)", x => new AtomDetailsPage(x.Groups["JobId"].Value)); JobHistoryRenderer.AddBackgroundStateColor(AtomCreatingState.StateName, "#e0f7fa"); JobHistoryRenderer.AddForegroundStateColor(AtomCreatingState.StateName, "#00acc1"); JobHistoryRenderer.AddBackgroundStateColor(SubAtomCreatedState.StateName, "#e0f7fa"); JobHistoryRenderer.AddForegroundStateColor(SubAtomCreatedState.StateName, "#0097a7"); JobHistoryRenderer.AddBackgroundStateColor(AtomCreatedState.StateName, "#e0f7fa"); JobHistoryRenderer.AddForegroundStateColor(AtomCreatedState.StateName, "#00838f"); JobHistoryRenderer.AddBackgroundStateColor(AtomRunningState.StateName, "#fff3e0"); JobHistoryRenderer.AddForegroundStateColor(AtomRunningState.StateName, "#ef6c00"); JobHistoryRenderer.Register(SubAtomCreatedState.StateName, AtomJobHistoryRenderer.AtomRender); JobHistoryRenderer.Register(AtomCreatingState.StateName, JobHistoryRenderer.NullRenderer); JobHistoryRenderer.Register(AtomCreatedState.StateName, AtomJobHistoryRenderer.AtomRender); JobHistoryRenderer.Register(AtomRunningState.StateName, AtomJobHistoryRenderer.AtomRender); JobsSidebarMenu.Items.Add(AtomJobSidebar.RenderMenu); // Triggers JobHistoryRenderer.AddBackgroundStateColor(TriggerWaitingState.StateName, "#e6f7ff"); JobHistoryRenderer.AddForegroundStateColor(TriggerWaitingState.StateName, "#e91e63"); JobHistoryRenderer.Register(TriggerWaitingState.StateName, JobHistoryRenderer.NullRenderer); DashboardRoutes.Routes.AddRazorPage("/jobs/triggers", x => new TriggersPage()); JobsSidebarMenu.Items.Add(TriggerJobSidebar.RenderMenu); }
/// <summary> /// Configures Hangfire to use Console. /// </summary> /// <param name="configuration">Global configuration</param> public static IGlobalConfiguration UseStackTrace(this IGlobalConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } JobHistoryRenderer.Register(FailedState.StateName, new FailedStateRenderer().Render); return(configuration); }
/// <summary> /// Configures Hangfire to use Console. /// </summary> /// <param name="configuration">Global configuration</param> /// <param name="options">Options for console</param> public static IGlobalConfiguration UseConsole(this IGlobalConfiguration configuration, ConsoleOptions options = null) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } options = options ?? new ConsoleOptions(); options.Validate(nameof(options)); if (DashboardRoutes.Routes.Contains("/console/([0-9a-f]{11}.+)")) { throw new InvalidOperationException("Console is already initialized"); } // register server filter for jobs GlobalJobFilters.Filters.Add(new ConsoleServerFilter(options)); // register apply state filter for jobs // (context may be altered by other state filters, so make it the very last filter in chain to use final context values) GlobalJobFilters.Filters.Add(new ConsoleApplyStateFilter(options), int.MaxValue); // replace renderer for Processing state JobHistoryRenderer.Register(ProcessingState.StateName, new ProcessingStateRenderer(options).Render); // register dispatchers to serve console data DashboardRoutes.Routes.Add("/console/progress", new JobProgressDispatcher(options)); DashboardRoutes.Routes.Add("/console/([0-9a-f]{11}.+)", new ConsoleDispatcher(options)); // register additional dispatchers for CSS and JS var assembly = typeof(ConsoleRenderer).GetTypeInfo().Assembly; var jsPath = DashboardRoutes.Routes.Contains("/js[0-9]+") ? "/js[0-9]+" : "/js[0-9]{3}"; DashboardRoutes.Routes.Append(jsPath, new EmbeddedResourceDispatcher(assembly, "Hangfire.Console.Resources.resize.min.js")); DashboardRoutes.Routes.Append(jsPath, new DynamicJsDispatcher(options)); DashboardRoutes.Routes.Append(jsPath, new EmbeddedResourceDispatcher(assembly, "Hangfire.Console.Resources.script.js")); var cssPath = DashboardRoutes.Routes.Contains("/css[0-9]+") ? "/css[0-9]+" : "/css[0-9]{3}"; DashboardRoutes.Routes.Append(cssPath, new EmbeddedResourceDispatcher(assembly, "Hangfire.Console.Resources.style.css")); DashboardRoutes.Routes.Append(cssPath, new DynamicCssDispatcher(options)); return(configuration); }
public static IGlobalConfiguration UseObjectRecognitionConsole(this IGlobalConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var fi = typeof(JobHistoryRenderer).GetField("Renderers", BindingFlags.NonPublic | BindingFlags.Static); if (fi != null) { var val = fi.GetValue(null) as IDictionary <string, Func <HtmlHelper, IDictionary <string, string>, NonEscapedString> >; var originalRenderer = val.ContainsKey(ProcessingState.StateName) ? val[ProcessingState.StateName] : JobHistoryRenderer.DefaultRenderer; // Chain renderers JobHistoryRenderer.Register(ProcessingState.StateName, new ProcessingStateRenderer(originalRenderer).Render); } return(configuration); }
public static IGlobalConfiguration UseJobsLogger(this IGlobalConfiguration configuration, JobsLoggerOptions options = null) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } options = options ?? new JobsLoggerOptions(); //Add Filter Job to register logs during execution GlobalJobFilters.Filters.Add(new JobsLoggerFilter(options)); //Add Page to see logs DashboardRoutes.Routes.AddRazorPage(Dashboard.Pages.LoggerPage.PageRoute, x => new Dashboard.Pages.Html.Logging()); JobHistoryRenderer.Register(EnqueuedState.StateName, new EnqueuedStateRenderer().Render); return(configuration); }
public override void Execute() { WriteLiteral("\r\n"); #line 13 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" var monitor = Storage.GetMonitoringApi(); var job = monitor.JobDetails(JobId); string title = null; if (job != null) { title = job.Job != null?Html.JobName(job.Job) : null; job.History.Add(new StateHistoryDto { StateName = "Created", CreatedAt = job.CreatedAt ?? default(DateTime) }); } title = title ?? Strings.Common_Job; Layout = new LayoutPage(title); #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n "); #line 31 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobsSidebar()); #line default #line hidden WriteLiteral("\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 class=\"page-header\">"); #line 34 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(title); #line default #line hidden WriteLiteral("</h1>\r\n\r\n"); #line 36 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job == null) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-warning\">\r\n "); #line 39 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(String.Format(Strings.JobDetailsPage_JobExpired, JobId)); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 41 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { var currentState = job.History[0]; if (currentState.StateName == ProcessingState.StateName) { var server = monitor.Servers().FirstOrDefault(x => x.Name == currentState.Data["ServerId"]); if (server == null) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-danger\">\r\n "); #line 51 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.Raw(String.Format(Strings.JobDetailsPage_JobAbortedNotActive_Warning_Html, currentState.Data["ServerId"], Url.To("/servers")))); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 53 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else if (server.Heartbeat.HasValue && server.Heartbeat < DateTime.UtcNow.AddMinutes(-1)) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-warning\">\r\n "); #line 57 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.Raw(String.Format(Strings.JobDetailsPage_JobAbortedWithHeartbeat_Warning_Html, server.Name))); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 59 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } } if (job.ExpireAt.HasValue) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n "); #line 65 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.Raw(String.Format(Strings.JobDetailsPage_JobFinished_Warning_Html, JobHelper.ToTimestamp(job.ExpireAt.Value), job.ExpireAt))); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 67 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" <div class=\"job-snippet\">\r\n <div class=\"job-snippet-co" + "de\">\r\n <pre><code><span class=\"comment\">// "); #line 71 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.JobDetailsPage_JobId); #line default #line hidden WriteLiteral(": "); #line 71 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobId(JobId.ToString(), false)); #line default #line hidden WriteLiteral("</span>\r\n"); #line 72 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(JobMethodCallRenderer.Render(job.Job)); #line default #line hidden WriteLiteral("\r\n</code></pre>\r\n </div>\r\n\r\n"); #line 76 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job.Properties.Count > 0) { #line default #line hidden WriteLiteral(" <div class=\"job-snippet-properties\">\r\n " + " <dl>\r\n"); #line 80 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" foreach (var property in job.Properties.Where(x => x.Key != "Continuations")) { #line default #line hidden WriteLiteral(" <dt>"); #line 82 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(property.Key); #line default #line hidden WriteLiteral("</dt>\r\n"); WriteLiteral(" <dd><pre><code>"); #line 83 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(property.Value); #line default #line hidden WriteLiteral("</code></pre></dd>\r\n"); #line 84 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </dl>\r\n </div>\r\n"); #line 87 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 89 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job.Properties.ContainsKey("Continuations")) { List <ContinuationsSupportAttribute.Continuation> continuations; using (var connection = Storage.GetConnection()) { continuations = JobHelper.FromJson <List <ContinuationsSupportAttribute.Continuation> >(connection.GetJobParameter( JobId, "Continuations")) ?? new List <ContinuationsSupportAttribute.Continuation>(); } if (continuations.Count > 0) { #line default #line hidden WriteLiteral(" <h3>"); #line 102 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Continuations); #line default #line hidden WriteLiteral("</h3>\r\n"); WriteLiteral(" <div class=\"table-responsive\">\r\n <tabl" + "e class=\"table\">\r\n <thead>\r\n " + " <tr>\r\n <th class=\"min-width\">"); #line 107 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Id); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 108 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Condition); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 109 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_State); #line default #line hidden WriteLiteral("</th>\r\n <th>"); #line 110 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Job); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right\">"); #line 111 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Created); #line default #line hidden WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n " + " <tbody>\r\n"); #line 115 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" foreach (var continuation in continuations) { JobData jobData; using (var connection = Storage.GetConnection()) { jobData = connection.GetJobData(continuation.JobId); } #line default #line hidden WriteLiteral(" <tr>\r\n"); #line 125 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (jobData == null) { #line default #line hidden WriteLiteral(" <td colspan=\"5\"><em>"); #line 127 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(String.Format(Strings.JobDetailsPage_JobExpired, continuation.JobId)); #line default #line hidden WriteLiteral("</em></td>\r\n"); #line 128 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <td class=\"min-width\">"); #line 131 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobIdLink(continuation.JobId)); #line default #line hidden WriteLiteral("</td>\r\n"); WriteLiteral(" <td class=\"min-width\"><code>"); #line 132 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(continuation.Options.ToString("G")); #line default #line hidden WriteLiteral("</code></td>\r\n"); WriteLiteral(" <td class=\"min-width\">"); #line 133 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.StateLabel(jobData.State)); #line default #line hidden WriteLiteral("</td>\r\n"); WriteLiteral(" <td class=\"word-break\">"); #line 134 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobNameLink(continuation.JobId, jobData.Job)); #line default #line hidden WriteLiteral("</td>\r\n"); WriteLiteral(" <td class=\"align-right\">"); #line 135 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.RelativeTime(jobData.CreatedAt)); #line default #line hidden WriteLiteral("</td>\r\n"); #line 136 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </tr>\r\n"); #line 138 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </tbody>\r\n </table>\r\n " + " </div>\r\n"); #line 142 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } } #line default #line hidden WriteLiteral(" <h3>\r\n"); #line 146 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job.History.Count > 1) { #line default #line hidden WriteLiteral(" <span class=\"job-snippet-buttons pull-right\">\r\n " + " <button class=\"btn btn-sm btn-default\" data-ajax=\""); #line 149 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Url.To("/jobs/actions/requeue/" + JobId)); #line default #line hidden WriteLiteral("\" data-loading-text=\""); #line 149 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Enqueueing); #line default #line hidden WriteLiteral("\">"); #line 149 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.JobDetailsPage_Requeue); #line default #line hidden WriteLiteral("</button>\r\n <button class=\"btn btn-sm btn-death\" data-ajax" + "=\""); #line 150 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Url.To("/jobs/actions/delete/" + JobId)); #line default #line hidden WriteLiteral("\" data-loading-text=\""); #line 150 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Deleting); #line default #line hidden WriteLiteral("\" data-confirm=\""); #line 150 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.JobDetailsPage_DeleteConfirm); #line default #line hidden WriteLiteral("\">"); #line 150 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Delete); #line default #line hidden WriteLiteral("</button>\r\n </span>\r\n"); #line 152 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral("\r\n "); #line 154 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.JobDetailsPage_State); #line default #line hidden WriteLiteral("\r\n </h3>\r\n"); #line 156 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" var index = 0; foreach (var entry in job.History) { var accentColor = JobHistoryRenderer.GetForegroundStateColor(entry.StateName); var backgroundColor = JobHistoryRenderer.GetBackgroundStateColor(entry.StateName); #line default #line hidden WriteLiteral(" <div class=\"state-card\" style=\""); #line 164 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(index == 0 ? $"border-color: {accentColor}" : null); #line default #line hidden WriteLiteral("\">\r\n <h4 class=\"state-card-title\" style=\""); #line 165 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(index == 0 ? $"color: {accentColor}" : null); #line default #line hidden WriteLiteral("\">\r\n <small class=\"pull-right text-muted\">\r\n"); #line 167 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (index == job.History.Count - 1) { #line default #line hidden #line 169 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.RelativeTime(entry.CreatedAt)); #line default #line hidden #line 169 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { var duration = Html.ToHumanDuration(entry.CreatedAt - job.History[index + 1].CreatedAt); if (index == 0) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 177 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.RelativeTime(entry.CreatedAt)); #line default #line hidden WriteLiteral(" ("); #line 177 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(duration); #line default #line hidden WriteLiteral(")\r\n"); #line 178 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 181 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.MomentTitle(entry.CreatedAt, duration)); #line default #line hidden WriteLiteral("\r\n"); #line 182 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } } #line default #line hidden WriteLiteral(" </small>\r\n\r\n "); #line 186 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(entry.StateName); #line default #line hidden WriteLiteral("\r\n </h4>\r\n\r\n"); #line 189 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (!String.IsNullOrWhiteSpace(entry.Reason)) { #line default #line hidden WriteLiteral(" <p class=\"state-card-text text-muted\">"); #line 191 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(entry.Reason); #line default #line hidden WriteLiteral("</p>\r\n"); #line 192 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral("\r\n"); #line 194 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" var rendered = Html.RenderHistory(entry.StateName, entry.Data); #line default #line hidden WriteLiteral("\r\n"); #line 198 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (rendered != null) { #line default #line hidden WriteLiteral(" <div class=\"state-card-body\" style=\""); #line 200 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(index == 0 ? $"background-color: {backgroundColor}" : null); #line default #line hidden WriteLiteral("\">\r\n "); #line 201 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(rendered); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 203 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 205 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" index++; } } #line default #line hidden WriteLiteral(" </div>\r\n</div>"); }
public override void Execute() { WriteLiteral("\r\n"); #line 9 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Layout = new LayoutPage(Strings.OnEventJobsPage_Title); List <OnEventJobDto> onEventJobs; int from, perPage; int.TryParse(Query("from"), out from); int.TryParse(Query("count"), out perPage); Pager pager = null; using (var connection = Storage.GetConnection()) { var storageConnection = connection as JobStorageConnection; if (storageConnection != null) { pager = new Pager(from, perPage, storageConnection.GetOnEventJobCount()); onEventJobs = storageConnection.GetOnEventJobs(pager.FromRecord, pager.FromRecord + pager.RecordsPerPage); } else { onEventJobs = connection.GetOnEventJobs(); } } #line default #line hidden WriteLiteral(@"<style> .table { /*table-layout: fixed;*/ } .table td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } </style> <div class=""row""> <div class=""col-md-12""> <h1 class=""page-header"">"); #line 47 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.OnEventJobsPage_Title); #line default #line hidden WriteLiteral("</h1>\r\n\r\n"); #line 49 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" if (onEventJobs.Count == 0) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n "); #line 52 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.OnEventJobsPage_NoJobs); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 54 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <div class=\"js-jobs-list\">\r\n <div class=\"btn-toolbar b" + "tn-toolbar-top\">\r\n <button class=\"js-jobs-list-command btn bt" + "n-sm btn-primary\"\r\n data-url=\""); #line 60 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Url.To("/onevent/trigger")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 61 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.OnEventJobsPage_Triggering); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <spa" + "n class=\"glyphicon glyphicon-play-circle\"></span>\r\n "); #line 64 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.OnEventJobsPage_TriggerNow); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n <button class=\"js-jobs-lis" + "t-command btn btn-sm btn-default\"\r\n data-url=\""); #line 68 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Url.To("/onevent/remove")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 69 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.Common_Deleting); #line default #line hidden WriteLiteral("\"\r\n data-confirm=\""); #line 70 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.Common_DeleteConfirm); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <spa" + "n class=\"glyphicon glyphicon-remove\"></span>\r\n "); #line 73 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.Common_Delete); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n"); #line 76 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 78 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Html.PerPageSelector(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 79 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } #line default #line hidden WriteLiteral(@" </div> <div class=""table-responsive""> <table class=""table""> <thead> <tr> <th class=""min-width""> <input type=""checkbox"" class=""js-jobs-list-select-all"" /> </th> "); WriteLiteral("\r\n <th class=\"min-width\">"); #line 90 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.OnEventJobsPage_Table_Signal); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 91 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.OnEventJobsPage_Table_Trigger); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 92 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.OnEventJobsPage_Table_Name); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 93 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.OnEventJobsPage_Table_LastExecution); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 94 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.Common_Created); #line default #line hidden WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n " + " <tbody>\r\n"); #line 98 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" foreach (var job in onEventJobs) { #line default #line hidden WriteLiteral(" <tr class=\"js-jobs-list-row hover\">\r\n " + " <td>\r\n <input typ" + "e=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"jobs[]\" value=\""); #line 102 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(job.Id); #line default #line hidden WriteLiteral("\" />\r\n </td>\r\n " + " "); WriteLiteral("\r\n\r\n <td class=\"min-width\">\r\n " + " "); WriteLiteral("\r\n"); #line 108 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" string triggerSignal = job.TriggerSignal; #line default #line hidden WriteLiteral("\r\n"); #line 113 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" if (triggerSignal != null) { #line default #line hidden WriteLiteral(" <code title=\""); #line 115 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(triggerSignal); #line default #line hidden WriteLiteral("\">"); #line 115 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(triggerSignal); #line default #line hidden WriteLiteral("</code>\r\n"); #line 116 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } #line default #line hidden WriteLiteral(" \r\n </t" + "d>\r\n\r\n <td class=\"min-width\">\r\n " + " "); WriteLiteral("\r\n"); #line 122 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" string triggerExpression = job.TriggerExpression; #line default #line hidden WriteLiteral("\r\n"); #line 126 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" if (triggerExpression != null) { #line default #line hidden WriteLiteral(" <code title=\""); #line 128 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(triggerExpression); #line default #line hidden WriteLiteral("\">"); #line 128 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(job.TriggerExpression); #line default #line hidden WriteLiteral("</code>\r\n"); #line 129 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <code>"); #line 132 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(job.TriggerExpression); #line default #line hidden WriteLiteral("</code>\r\n"); #line 133 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n\r\n " + "<td class=\"min-width\">\r\n"); #line 137 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" if (!String.IsNullOrWhiteSpace(job.Name)) { #line default #line hidden WriteLiteral(" <span data-container=\"body\">"); #line 139 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(job.Name); #line default #line hidden WriteLiteral("</span>\r\n"); #line 140 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } #line default #line hidden WriteLiteral(" \r\n </t" + "d>\r\n \r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 145 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" if (job.LastExecution != null) { if (!String.IsNullOrEmpty(job.LastJobId)) { #line default #line hidden WriteLiteral(" <a href=\""); #line 149 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Url.JobDetails(job.LastJobId)); #line default #line hidden WriteLiteral("\">\r\n <span class=\"label label-" + "default label-hover\" style=\""); #line 150 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write($"background-color: {JobHistoryRenderer.GetForegroundStateColor(job.LastJobState)};"); #line default #line hidden WriteLiteral("\">\r\n "); #line 151 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </span>\r\n " + " </a>\r\n"); #line 154 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>\r\n " + " "); #line 158 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.OnEventJobsPage_Canceled); #line default #line hidden WriteLiteral(" "); #line 158 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </em>\r\n"); #line 160 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } } else { #line default #line hidden WriteLiteral(" <em>"); #line 164 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 165 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 168 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" if (job.CreatedAt != null) { #line default #line hidden #line 170 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Html.RelativeTime(job.CreatedAt.Value)); #line default #line hidden #line 170 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 175 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r" + "\n"); #line 178 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </tbody>\r\n </table>\r\n <" + "/div>\r\n\r\n"); #line 183 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 185 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" Write(Html.Paginator(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 186 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 188 "..\..\Dashboard\Pages\OnEventJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n</div> "); }
public override void Execute() { WriteLiteral("\r\n"); #line 10 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Layout = new LayoutPage(Strings.AwaitingJobsPage_Title); int from, perPage; int.TryParse(Query("from"), out from); int.TryParse(Query("count"), out perPage); List <string> jobIds = null; Pager pager = null; using (var connection = Storage.GetConnection()) { var storageConnection = connection as JobStorageConnection; if (storageConnection != null) { pager = new Pager(from, perPage, storageConnection.GetSetCount("awaiting")); jobIds = storageConnection.GetRangeFromSet("awaiting", pager.FromRecord, pager.FromRecord + pager.RecordsPerPage - 1); } } #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n "); #line 35 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.JobsSidebar()); #line default #line hidden WriteLiteral("\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 class=\"page-header\">"); #line 38 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.AwaitingJobsPage_Title); #line default #line hidden WriteLiteral("</h1>\r\n\r\n"); #line 40 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" if (jobIds == null) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-warning\">\r\n <h4>"); #line 43 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.AwaitingJobsPage_ContinuationsWarning_Title); #line default #line hidden WriteLiteral("</h4>\r\n <p>"); #line 44 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.AwaitingJobsPage_ContinuationsWarning_Text); #line default #line hidden WriteLiteral("</p>\r\n </div>\r\n"); #line 46 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else if (jobIds.Count > 0) { #line default #line hidden WriteLiteral(" <div class=\"js-jobs-list\">\r\n <div class=\"btn-toolbar b" + "tn-toolbar-top\">\r\n <button class=\"js-jobs-list-command btn bt" + "n-sm btn-primary\"\r\n data-url=\""); #line 52 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Url.To("/jobs/awaiting/enqueue")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 53 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_Enqueueing); #line default #line hidden WriteLiteral("\">\r\n <span class=\"glyphicon glyphicon-repeat\"></span>\r\n " + " "); #line 55 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_EnqueueButton_Text); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n <button class=\"js-jobs-lis" + "t-command btn btn-sm btn-default\"\r\n data-url=\""); #line 59 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Url.To("/jobs/awaiting/delete")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 60 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_Deleting); #line default #line hidden WriteLiteral("\"\r\n data-confirm=\""); #line 61 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_DeleteConfirm); #line default #line hidden WriteLiteral("\">\r\n <span class=\"glyphicon glyphicon-remove\"></span>\r\n " + " "); #line 63 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_DeleteSelected); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n "); #line 66 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.PerPageSelector(pager)); #line default #line hidden WriteLiteral(@" </div> <div class=""table-responsive""> <table class=""table table-hover""> <thead> <tr> <th class=""min-width""> <input type=""checkbox"" class=""js-jobs-list-select-all"" /> </th> <th class=""min-width"">"); #line 76 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_Id); #line default #line hidden WriteLiteral("</th>\r\n <th>"); #line 77 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_Job); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 78 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.AwaitingJobsPage_Table_Options); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 79 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.AwaitingJobsPage_Table_Parent); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right\">"); #line 80 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_Created); #line default #line hidden WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n " + " <tbody>\r\n"); #line 84 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" foreach (var jobId in jobIds) { JobData jobData; StateData stateData; StateData parentStateData = null; using (var connection = Storage.GetConnection()) { jobData = connection.GetJobData(jobId); stateData = connection.GetStateData(jobId); if (stateData != null && stateData.Name == AwaitingState.StateName) { parentStateData = connection.GetStateData(stateData.Data["ParentId"]); } } #line default #line hidden WriteLiteral(" <tr class=\"js-jobs-list-row "); #line 101 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(jobData != null ? "hover" : null); #line default #line hidden WriteLiteral("\">\r\n <td>\r\n " + " <input type=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"jobs[]\" value=\""); #line 103 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(jobId); #line default #line hidden WriteLiteral("\" />\r\n </td>\r\n " + " <td class=\"min-width\">\r\n "); #line 106 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.JobIdLink(jobId)); #line default #line hidden WriteLiteral("\r\n </td>\r\n"); #line 108 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" if (jobData == null) { #line default #line hidden WriteLiteral(" <td colspan=\"2\"><em>"); #line 110 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_JobExpired); #line default #line hidden WriteLiteral("</em></td>\r\n"); #line 111 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <td>\r\n " + " "); #line 115 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.JobNameLink(jobId, jobData.Job)); #line default #line hidden WriteLiteral("\r\n </td>\r\n"); WriteLiteral(" <td class=\"min-width\">\r\n"); #line 118 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" if (stateData != null && stateData.Data.ContainsKey("Options") && !String.IsNullOrWhiteSpace(stateData.Data["Options"])) { #line default #line hidden WriteLiteral(" <code>"); #line 120 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(stateData.Data["Options"]); #line default #line hidden WriteLiteral("</code>\r\n"); #line 121 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>"); #line 124 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 125 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n"); WriteLiteral(" <td class=\"min-width\">\r\n"); #line 128 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" if (parentStateData != null) { #line default #line hidden WriteLiteral(" <a href=\""); #line 130 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Url.JobDetails(stateData.Data["ParentId"])); #line default #line hidden WriteLiteral("\">\r\n <span class=\"label label-" + "default label-hover\" style=\""); #line 131 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write($"background-color: {JobHistoryRenderer.GetForegroundStateColor(parentStateData.Name)};"); #line default #line hidden WriteLiteral("\">\r\n "); #line 132 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(parentStateData.Name); #line default #line hidden WriteLiteral("\r\n </span>\r\n " + " </a>\r\n"); #line 135 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>"); #line 138 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 139 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n"); WriteLiteral(" <td class=\"min-width align-right\">\r\n " + " "); #line 142 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.RelativeTime(jobData.CreatedAt)); #line default #line hidden WriteLiteral("\r\n </td>\r\n"); #line 144 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </tr>\r\n"); #line 146 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </tbody>\r\n </table>\r\n <" + "/div>\r\n "); #line 150 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.Paginator(pager)); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 152 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n "); #line 156 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Strings.AwaitingJobsPage_NoJobs); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 158 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n</div>\r\n"); }
public override void Execute() { WriteLiteral("\r\n"); #line 8 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" var monitor = Storage.GetMonitoringApi(); var job = monitor.JobDetails(JobId.ToString()); string title = null; if (job != null) { title = job.Job != null?Html.JobName(job.Job) : null; } title = title ?? "Job"; Layout = new LayoutPage(title); #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n "); #line 25 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobsSidebar()); #line default #line hidden WriteLiteral("\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 class=\"page-header\">"); #line 28 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(title); #line default #line hidden WriteLiteral("</h1>\r\n\r\n"); #line 30 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job == null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" The job with id \'"); #line 32 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(JobId); #line default #line hidden WriteLiteral("\' has expired or could not be found on the server.\r\n"); #line 33 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { var currentState = job.History.Count > 0 ? job.History[0] : null; if (currentState != null && currentState.StateName == ProcessingState.StateName) { var server = monitor.Servers().FirstOrDefault(x => x.Name == currentState.Data["ServerId"]); if (server == null) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-danger\">\r\n <st" + "rong>The job was aborted</strong> – it is processed by server\r\n " + " <code>"); #line 44 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(currentState.Data["ServerId"]); #line default #line hidden WriteLiteral("</code> which is not in the \r\n <a href=\""); #line 45 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Url.To("/servers")); #line default #line hidden WriteLiteral("\">active servers</a> list for now.\r\n It will be retried au" + "tomatically after invisibility timeout, but you can\r\n als" + "o re-queue or delete it manually.\r\n </div>\r\n"); #line 49 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else if (server.Heartbeat.HasValue && server.Heartbeat < DateTime.UtcNow.AddMinutes(-1)) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-warning\">\r\n <s" + "trong>Looks like the job was aborted</strong> – it is processed by server\r\n " + " <code>"); #line 54 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(server.Name); #line default #line hidden WriteLiteral("</code>, which reported its heartbeat more than 1 minute ago.\r\n " + " It will be retried automatically after invisibility timeout, but you can\r\n" + " also re-queue or delete it manually.\r\n " + " </div>\r\n"); #line 58 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } } if (job.ExpireAt.HasValue) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n <strong>The j" + "ob is finished</strong>.\r\n It will be removed automatically <" + "em><abbr data-moment=\""); #line 65 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(JobHelper.ToTimestamp(job.ExpireAt.Value)); #line default #line hidden WriteLiteral("\">"); #line 65 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(job.ExpireAt); #line default #line hidden WriteLiteral("</abbr></em>.\r\n </div>\r\n"); #line 67 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" <div class=\"job-snippet\">\r\n <div class=\"job-snippet-he" + "ader\">\r\n <span class=\"job-snippet-tab\">\r\n " + " Job ID: <span class=\"job-snippet-id\">"); #line 72 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobId(JobId.ToString(), false)); #line default #line hidden WriteLiteral("</span>\r\n </span>\r\n\r\n <span class=\"job-snip" + "pet-buttons pull-right\">\r\n <button class=\"btn btn-xs btn-" + "default\" data-ajax=\""); #line 76 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Url.To("/jobs/actions/requeue/" + JobId)); #line default #line hidden WriteLiteral("\" data-loading-text=\"Enqueueing...\">Requeue</button>\r\n <bu" + "tton class=\"btn btn-xs btn-death\" data-ajax=\""); #line 77 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Url.To("/jobs/actions/delete/" + JobId)); #line default #line hidden WriteLiteral(@""" data-loading-text=""Deleting..."" data-confirm=""Do you really want to delete this job?"">Delete</button> </span> <div class=""clearfix""></div> </div> <div class=""job-snippet-body""> <div class=""job-snippet-code""> "); #line 84 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job.CreatedAt.HasValue) { #line default #line hidden WriteLiteral(" <div class=\"pull-right job-creation-date\">\r\n " + " Created\r\n "); #line 88 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.RelativeTime(job.CreatedAt.Value)); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 90 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden #line 91 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job != null) { #line default #line hidden WriteLiteral(" <pre><code>"); #line 93 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(JobMethodCallRenderer.Render(job.Job)); #line default #line hidden WriteLiteral("</code></pre>\r\n"); #line 94 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" <div class=\"clearfix\"></div>\r\n </div>\r" + "\n\r\n"); #line 98 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job.Properties.Count > 0) { #line default #line hidden WriteLiteral(" <div class=\"job-snippet-properties\">\r\n " + " <dl>\r\n"); #line 102 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" foreach (var property in job.Properties) { #line default #line hidden WriteLiteral(" <dt>"); #line 104 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(property.Key); #line default #line hidden WriteLiteral("</dt>\r\n"); WriteLiteral(" <dd>\r\n " + " <pre><code>"); #line 106 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(property.Value); #line default #line hidden WriteLiteral("</code></pre>\r\n </dd>\r\n"); #line 108 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </dl>\r\n </div>\r\n"); #line 111 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n </div>\r\n"); #line 114 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job.History.Count > 0) { #line default #line hidden WriteLiteral(" <h3>History</h3>\r\n"); #line 118 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" var index = 0; DateTime[] entriesCreationTime = job.History.Select(x => x.CreatedAt).ToArray(); var nextEntry = 1; foreach (var entry in job.History) { var background = index == 0 ? JobHistoryRenderer.GetForegroundStateColor(entry.StateName) : JobHistoryRenderer.GetBackgroundStateColor(entry.StateName); #line default #line hidden WriteLiteral(" <div class=\"job-history "); #line 129 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(index == 0 ? "job-history-current" : null); #line default #line hidden WriteLiteral("\">\r\n <div class=\"job-history-heading\" style=\""); #line 130 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(String.Format("background-color: {0};", background)); #line default #line hidden WriteLiteral("\">\r\n <span class=\"pull-right\" data-moment-title=\""); #line 131 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(JobHelper.ToTimestamp(entry.CreatedAt)); #line default #line hidden WriteLiteral("\">\r\n "); #line 132 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.ToHumanDuration(entry.CreatedAt - (nextEntry < entriesCreationTime.Length ? entriesCreationTime[nextEntry] : job.CreatedAt))); #line default #line hidden WriteLiteral("\r\n"); #line 133 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" nextEntry++; #line default #line hidden WriteLiteral(" </span>\r\n <h4 class=\"job-h" + "istory-title\">\r\n "); #line 136 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(entry.StateName); #line default #line hidden WriteLiteral("\r\n\r\n"); #line 138 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (!String.IsNullOrWhiteSpace(entry.Reason)) { #line default #line hidden WriteLiteral(" <small>"); #line 140 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(entry.Reason); #line default #line hidden WriteLiteral("</small>\r\n"); #line 141 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </h4>\r\n </div>\r\n\r\n"); #line 145 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (JobHistoryRenderer.Exists(entry.StateName)) { var rendered = Html.RenderHistory(entry.StateName, entry.Data); if (rendered != null) { #line default #line hidden WriteLiteral(" <div class=\"job-history-body\">\r\n " + " "); #line 151 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(rendered); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 153 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } } else { #line default #line hidden WriteLiteral(" <div class=\"job-history-body\">\r\n " + " <dl class=\"dl-horizontal\">\r\n"); #line 159 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" foreach (var item in entry.Data) { #line default #line hidden WriteLiteral(" <dt>"); #line 161 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(item.Key); #line default #line hidden WriteLiteral(":</dt>\r\n"); WriteLiteral(" <dd>"); #line 162 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(item.Value); #line default #line hidden WriteLiteral("</dd>\r\n"); #line 163 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </dl>\r\n </div>\r\n"); #line 166 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 168 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" index++; } } } #line default #line hidden WriteLiteral(" </div>\r\n</div>"); }
public override void Execute() { WriteLiteral("\n"); #line 11 "..\..\Pages\JobDetailsPage.cshtml" var monitor = JobStorage.Current.GetMonitoringApi(); JobDetailsDto job = monitor.JobDetails(JobId.ToString()); string title = null; if (job != null) { title = job.Job != null?String.Format("{0}.{1}", job.Job.Type.Name, job.Job.Method.Name) : null; } title = title ?? "Job"; Layout = new LayoutPage { Title = title }; #line default #line hidden WriteLiteral("\n"); #line 27 "..\..\Pages\JobDetailsPage.cshtml" if (job == null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" The job with id \'"); #line 29 "..\..\Pages\JobDetailsPage.cshtml" Write(JobId); #line default #line hidden WriteLiteral("\' was expired or was not existed on the server.\n"); #line 30 "..\..\Pages\JobDetailsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <div class=\"job-snippet-header\">\n <span class=\"job-snippet-tab\">\n " + " Job ID: <span class=\"job-snippet-id\">"); #line 35 "..\..\Pages\JobDetailsPage.cshtml" Write(HtmlHelper.JobId(JobId.ToString(), false)); #line default #line hidden WriteLiteral("</span>\n </span>\n\n <span class=\"job-snippet-buttons pull-right\">\n " + " <button class=\"btn btn-xs btn-default\" data-ajax=\""); #line 39 "..\..\Pages\JobDetailsPage.cshtml" Write(Request.LinkTo("/actions/requeue/" + JobId)); #line default #line hidden WriteLiteral("\" data-loading-text=\"Enqueueing...\">Requeue</button>\n <button class=\"b" + "tn btn-xs btn-death\" data-ajax=\""); #line 40 "..\..\Pages\JobDetailsPage.cshtml" Write(Request.LinkTo("/actions/delete/" + JobId)); #line default #line hidden WriteLiteral("\" data-loading-text=\"Deleting...\" data-confirm=\"Do you really want to delete this" + " job?\">Delete</button>\n </span>\n\n <div class=\"clearfix\"></div>\n " + " </div>\n"); WriteLiteral(" <div class=\"job-snippet\">\n <div class=\"job-snippet-code\">\n"); #line 47 "..\..\Pages\JobDetailsPage.cshtml" if (job.CreatedAt.HasValue) { #line default #line hidden WriteLiteral(" <div class=\"pull-right job-creation-date\">\n Cr" + "eated\n <span data-moment=\""); #line 51 "..\..\Pages\JobDetailsPage.cshtml" Write(JobHelper.ToStringTimestamp(job.CreatedAt.Value)); #line default #line hidden WriteLiteral("\"></span>\n </div>\n"); #line 53 "..\..\Pages\JobDetailsPage.cshtml" } #line default #line hidden #line 54 "..\..\Pages\JobDetailsPage.cshtml" if (job != null) { #line default #line hidden WriteLiteral(" <pre><code>"); #line 56 "..\..\Pages\JobDetailsPage.cshtml" Write(JobMethodCallRenderer.Render(job.Job)); #line default #line hidden WriteLiteral("</code></pre>\n"); #line 57 "..\..\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" <div class=\"clearfix\"></div>\n </div>\n\n"); #line 61 "..\..\Pages\JobDetailsPage.cshtml" if (job.Properties.Count > 0) { #line default #line hidden WriteLiteral(" <div class=\"job-snippet-properties\">\n <dl>\n"); #line 65 "..\..\Pages\JobDetailsPage.cshtml" foreach (var property in job.Properties) { #line default #line hidden WriteLiteral(" <dt>"); #line 67 "..\..\Pages\JobDetailsPage.cshtml" Write(property.Key); #line default #line hidden WriteLiteral("</dt>\n"); WriteLiteral(" <dd>\n <pre>"); #line 69 "..\..\Pages\JobDetailsPage.cshtml" Write(property.Value); #line default #line hidden WriteLiteral("</pre>\n </dd>\n"); #line 71 "..\..\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </dl>\n </div>\n"); #line 74 "..\..\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\n"); #line 76 "..\..\Pages\JobDetailsPage.cshtml" if (job.History.Count > 0) { #line default #line hidden WriteLiteral(" <h3>History</h3>\n"); #line 80 "..\..\Pages\JobDetailsPage.cshtml" var index = 0; DateTime[] entriesCreationTime = job.History.Select(x => x.CreatedAt).ToArray(); var nextEntry = 1; foreach (var entry in job.History) { var background = JobHistoryRenderer.BackgroundStateColors.ContainsKey(entry.StateName) ? JobHistoryRenderer.BackgroundStateColors[entry.StateName] : null; if (index == 0) { background = JobHistoryRenderer.ForegroundStateColors.ContainsKey(entry.StateName) ? JobHistoryRenderer.ForegroundStateColors[entry.StateName] : null; } #line default #line hidden WriteLiteral(" <div class=\"job-history "); #line 98 "..\..\Pages\JobDetailsPage.cshtml" Write(index == 0 ? "job-history-current" : null); #line default #line hidden WriteLiteral("\">\n <div class=\"job-history-heading\" style=\""); #line 99 "..\..\Pages\JobDetailsPage.cshtml" Write(background != null ? String.Format("background-color: {0};", background) : null); #line default #line hidden WriteLiteral("\">\n <span class=\"pull-right\" data-moment-title=\""); #line 100 "..\..\Pages\JobDetailsPage.cshtml" Write(JobHelper.ToStringTimestamp(entry.CreatedAt)); #line default #line hidden WriteLiteral("\">\n "); #line 101 "..\..\Pages\JobDetailsPage.cshtml" Write(HtmlHelper.ToHumanDuration(entry.CreatedAt - (nextEntry < entriesCreationTime.Length ? entriesCreationTime[nextEntry] : job.CreatedAt))); #line default #line hidden WriteLiteral("\n"); #line 102 "..\..\Pages\JobDetailsPage.cshtml" nextEntry++; #line default #line hidden WriteLiteral(" </span>\n <h4 class=\"job-history-title\">\n " + " "); #line 105 "..\..\Pages\JobDetailsPage.cshtml" Write(entry.StateName); #line default #line hidden WriteLiteral("\n\n"); #line 107 "..\..\Pages\JobDetailsPage.cshtml" if (!String.IsNullOrWhiteSpace(entry.Reason)) { #line default #line hidden WriteLiteral(" <small>"); #line 109 "..\..\Pages\JobDetailsPage.cshtml" Write(entry.Reason); #line default #line hidden WriteLiteral("</small>\n"); #line 110 "..\..\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </h4>\n </div>\n\n"); #line 114 "..\..\Pages\JobDetailsPage.cshtml" if (JobHistoryRenderer.Exists(entry.StateName)) { var rendered = JobHistoryRenderer.Render(entry.StateName, entry.Data); if (rendered != null) { #line default #line hidden WriteLiteral(" <div class=\"job-history-body\">\n " + " "); #line 120 "..\..\Pages\JobDetailsPage.cshtml" Write(rendered); #line default #line hidden WriteLiteral("\n </div>\n"); #line 122 "..\..\Pages\JobDetailsPage.cshtml" } } else { #line default #line hidden WriteLiteral(" <div class=\"job-history-body\">\n <dl cl" + "ass=\"dl-horizontal\">\n"); #line 128 "..\..\Pages\JobDetailsPage.cshtml" foreach (var item in entry.Data) { #line default #line hidden WriteLiteral(" <dt>"); #line 130 "..\..\Pages\JobDetailsPage.cshtml" Write(item.Key); #line default #line hidden WriteLiteral(":</dt>\n"); WriteLiteral(" <dd>"); #line 131 "..\..\Pages\JobDetailsPage.cshtml" Write(item.Value); #line default #line hidden WriteLiteral("</dd>\n"); #line 132 "..\..\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </dl>\n </div>\n"); #line 135 "..\..\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\n"); #line 137 "..\..\Pages\JobDetailsPage.cshtml" index++; } } } #line default #line hidden }
public override void Execute() { WriteLiteral("\r\n"); #line 11 "..\..\Dashboard\RecurringJobDetails.cshtml" RecurringJobDto recurringJob; using (var connection = Storage.GetConnection()) { recurringJob = connection.GetRecurringJobDto(RecurringJobId); } Layout = new LayoutPage(String.Format("Recurring Job '{0}'", RecurringJobId)); #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h1 class=\"page-header\"" + ">"); #line 24 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(String.Format("Recurring Job '{0}'", RecurringJobId)); #line default #line hidden WriteLiteral("</h1>\r\n"); #line 25 "..\..\Dashboard\RecurringJobDetails.cshtml" if (recurringJob == null) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-warning\">Couldn\'t find recurring job \'"); #line 27 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(RecurringJobId); #line default #line hidden WriteLiteral("\'.</div>\r\n"); #line 28 "..\..\Dashboard\RecurringJobDetails.cshtml" } else { #line default #line hidden WriteLiteral(" <table class=\"table table-hover\">\r\n <col width=\"200\">\r" + "\n <tr>\r\n <th>"); #line 34 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.RecurringJobsPage_Table_Cron); #line default #line hidden WriteLiteral("</th>\r\n <td>\r\n <code>"); #line 36 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(recurringJob.Cron); #line default #line hidden WriteLiteral("</code>\r\n </td>\r\n </tr>\r\n <tr>\r\n" + " <th>"); #line 40 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.RecurringJobsPage_Table_TimeZone); #line default #line hidden WriteLiteral("</th>\r\n <td>\r\n"); #line 42 "..\..\Dashboard\RecurringJobDetails.cshtml" if (!String.IsNullOrWhiteSpace(recurringJob.TimeZoneId)) { string displayName; Exception exception = null; try { var resolver = DashboardOptions.TimeZoneResolver ?? new DefaultTimeZoneResolver(); displayName = resolver.GetTimeZoneById(recurringJob.TimeZoneId).DisplayName; } catch (Exception ex) { displayName = null; exception = ex; } #line default #line hidden WriteLiteral(" <span title=\""); #line 58 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(displayName); #line default #line hidden WriteLiteral("\" data-container=\"body\">"); #line 58 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(recurringJob.TimeZoneId); #line default #line hidden WriteLiteral("\r\n"); #line 59 "..\..\Dashboard\RecurringJobDetails.cshtml" if (exception != null) { #line default #line hidden WriteLiteral(" <span class=\"glyphicon glyphicon-exclamation-" + "sign\" title=\""); #line 61 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(exception.Message); #line default #line hidden WriteLiteral("\"></span>\r\n"); #line 62 "..\..\Dashboard\RecurringJobDetails.cshtml" } #line default #line hidden WriteLiteral(" </span>\r\n"); #line 64 "..\..\Dashboard\RecurringJobDetails.cshtml" } else { #line default #line hidden WriteLiteral(" "); WriteLiteral(" UTC\r\n"); #line 68 "..\..\Dashboard\RecurringJobDetails.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n " + " <th>"); #line 72 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.Common_Job); #line default #line hidden WriteLiteral("</th>\r\n <td>\r\n"); #line 74 "..\..\Dashboard\RecurringJobDetails.cshtml" if (recurringJob.Job != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 76 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Html.JobName(recurringJob.Job)); #line default #line hidden WriteLiteral("\r\n"); #line 77 "..\..\Dashboard\RecurringJobDetails.cshtml" } else if (recurringJob.LoadException != null && recurringJob.LoadException.InnerException != null) { #line default #line hidden WriteLiteral(" <em>"); #line 80 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(recurringJob.LoadException.InnerException.Message); #line default #line hidden WriteLiteral("</em>\r\n"); #line 81 "..\..\Dashboard\RecurringJobDetails.cshtml" } else if (recurringJob.LoadException != null) { #line default #line hidden WriteLiteral(" <em>"); #line 84 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(recurringJob.LoadException.Message); #line default #line hidden WriteLiteral("</em>\r\n"); #line 85 "..\..\Dashboard\RecurringJobDetails.cshtml" } else { #line default #line hidden WriteLiteral(" <em>"); #line 88 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 89 "..\..\Dashboard\RecurringJobDetails.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n " + " <th>"); #line 93 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.RecurringJobsPage_Table_NextExecution); #line default #line hidden WriteLiteral("</th>\r\n <td>\r\n"); #line 95 "..\..\Dashboard\RecurringJobDetails.cshtml" if (recurringJob.NextExecution != null) { #line default #line hidden #line 97 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Html.RelativeTime(recurringJob.NextExecution.Value)); #line default #line hidden #line 97 "..\..\Dashboard\RecurringJobDetails.cshtml" } else { if (!String.IsNullOrEmpty(recurringJob.Error)) { #line default #line hidden WriteLiteral(" <span class=\"label label-danger text-uppercase\" t" + "itle=\""); #line 103 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(recurringJob.Error); #line default #line hidden WriteLiteral("\">"); #line 103 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.Common_Error); #line default #line hidden WriteLiteral("</span>\r\n"); #line 104 "..\..\Dashboard\RecurringJobDetails.cshtml" } else { #line default #line hidden WriteLiteral(" <span class=\"label label-warning text-uppercase\" " + "title=\""); #line 107 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.RecurringJobsPage_RecurringJobDisabled_Tooltip); #line default #line hidden WriteLiteral("\">"); #line 107 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.Common_Disabled); #line default #line hidden WriteLiteral("</span>\r\n"); #line 108 "..\..\Dashboard\RecurringJobDetails.cshtml" } } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n " + " <th>"); #line 113 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.RecurringJobsPage_Table_LastExecution); #line default #line hidden WriteLiteral("</th>\r\n <td>\r\n"); #line 115 "..\..\Dashboard\RecurringJobDetails.cshtml" if (recurringJob.LastExecution != null) { if (!String.IsNullOrEmpty(recurringJob.LastJobId)) { #line default #line hidden WriteLiteral(" <a href=\""); #line 119 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Url.JobDetails(recurringJob.LastJobId)); #line default #line hidden WriteLiteral("\" style=\"text-decoration: none\">\r\n <span class" + "=\"label label-default label-hover\" style=\""); #line 120 "..\..\Dashboard\RecurringJobDetails.cshtml" Write($"background-color: {JobHistoryRenderer.GetForegroundStateColor(recurringJob.LastJobState ?? EnqueuedState.StateName)};"); #line default #line hidden WriteLiteral("\">\r\n "); #line 121 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Html.RelativeTime(recurringJob.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </span>\r\n </" + "a>\r\n"); #line 124 "..\..\Dashboard\RecurringJobDetails.cshtml" } else { #line default #line hidden WriteLiteral(" <em>\r\n "); #line 128 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.RecurringJobsPage_Canceled); #line default #line hidden WriteLiteral(" "); #line 128 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Html.RelativeTime(recurringJob.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </em>\r\n"); #line 130 "..\..\Dashboard\RecurringJobDetails.cshtml" } } else { #line default #line hidden WriteLiteral(" <em>"); #line 134 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 135 "..\..\Dashboard\RecurringJobDetails.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n " + " <th>"); #line 139 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.Common_Created); #line default #line hidden WriteLiteral("</th>\r\n <td>\r\n"); #line 141 "..\..\Dashboard\RecurringJobDetails.cshtml" if (recurringJob.CreatedAt != null) { #line default #line hidden #line 143 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Html.RelativeTime(recurringJob.CreatedAt.Value)); #line default #line hidden #line 143 "..\..\Dashboard\RecurringJobDetails.cshtml" } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 148 "..\..\Dashboard\RecurringJobDetails.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r\n </table>\r\n"); #line 152 "..\..\Dashboard\RecurringJobDetails.cshtml" #line default #line hidden WriteLiteral(" <div>\r\n"); #line 154 "..\..\Dashboard\RecurringJobDetails.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <button class=\"recurring-job-command btn btn-sm btn-primary\"\r" + "\n data-id=\""); #line 157 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(RecurringJobId); #line default #line hidden WriteLiteral("\"\r\n data-url=\""); #line 158 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Url.To("/recurring/trigger")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 159 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.RecurringJobsPage_Triggering); #line default #line hidden WriteLiteral("\">\r\n <span class=\"glyphicon glyphicon-play-circle\"></span>" + "\r\n "); #line 161 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.RecurringJobsPage_TriggerNow); #line default #line hidden WriteLiteral("\r\n </button>\r\n"); #line 163 "..\..\Dashboard\RecurringJobDetails.cshtml" } #line default #line hidden #line 164 "..\..\Dashboard\RecurringJobDetails.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <button class=\"recurring-job-command btn btn-sm btn-default\"\r" + "\n data-id=\""); #line 167 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(RecurringJobId); #line default #line hidden WriteLiteral("\"\r\n data-url=\""); #line 168 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Url.To("/recurring/remove")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 169 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.Common_Deleting); #line default #line hidden WriteLiteral("\"\r\n data-confirm=\""); #line 170 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.Common_DeleteConfirm); #line default #line hidden WriteLiteral("\">\r\n <span class=\"glyphicon glyphicon-remove\"></span>\r\n " + " "); #line 172 "..\..\Dashboard\RecurringJobDetails.cshtml" Write(Strings.Common_Delete); #line default #line hidden WriteLiteral("\r\n </button>\r\n"); #line 174 "..\..\Dashboard\RecurringJobDetails.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 176 "..\..\Dashboard\RecurringJobDetails.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n</div>\r\n"); }
public override void Execute() { WriteLiteral("\r\n"); WriteLiteral("\r\n"); WriteLiteral("\r\n"); Init(); WriteLiteral(@" <!-- Modal模态框模板 --> <div class=""modal fade"" id=""myModal"" tabindex=""-1"" role=""dialog"" aria-labelledby=""myModalLabel""> <div class=""modal-dialog modal-lg"" id=""periodModalDialog"" role=""document""> <!-- 内容有具体事件决定加载 --> </div> </div> <div class=""row""> <div class=""col-md-12""> <h1 class=""page-header"">"); Write(Strings.RecurringJobsPage_Title); WriteLiteral("</h1>\r\n <div class=\"js-jobs-list\">\r\n\r\n "); WriteLiteral("\r\n <div class=\"btn-toolbar btn-toolbar-top\">\r\n "); WriteLiteral("\r\n <button class=\"btn btn-info btn-sm js-periodic-jobs-list-edit\"\r" + "\n data-toggle=\"modal\"\r\n data-targe" + "t=\"#myModal\">\r\n "); Write(Strings.Common_Created); WriteLiteral("\r\n </button>\r\n "); WriteLiteral("\r\n"); if (!IsReadOnly) { WriteLiteral(" <button class=\"js-jobs-list-command btn btn-sm btn-primary\"\r\n" + " data-url=\""); Write(Url.To("/recurring/trigger")); WriteLiteral("\"\r\n data-loading-text=\""); Write(Strings.RecurringJobsPage_Triggering); WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <span cl" + "ass=\"glyphicon glyphicon-play-circle\"></span>\r\n "); Write(Strings.RecurringJobsPage_TriggerNow); WriteLiteral("\r\n </button>\r\n"); } if (!IsReadOnly) { WriteLiteral(" <button class=\"js-jobs-list-command btn btn-sm btn-danger\"\r\n " + " data-url=\""); Write(Url.To("/periodic/remove")); WriteLiteral("\"\r\n data-loading-text=\""); Write(Strings.Common_Deleting); WriteLiteral("\"\r\n data-confirm=\""); Write(Strings.Common_DeleteConfirm); WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <span cl" + "ass=\"glyphicon glyphicon-remove\"></span>\r\n "); Write(Strings.Common_Delete); WriteLiteral("\r\n </button>\r\n"); } if (pager != null) { WriteLiteral(" "); WriteLiteral(" "); Write(Html.PerPageSelector(pager)); WriteLiteral("\r\n"); } WriteLiteral(" </div>\r\n\r\n <div class=\"table-responsive\">\r\n " + " <table class=\"table\">\r\n <thead>\r\n <tr" + ">\r\n"); if (!IsReadOnly) { WriteLiteral(" <th class=\"min-width\">\r\n " + " <input type=\"checkbox\" class=\"js-jobs-list-select-all\" />\r\n " + " </th>\r\n"); } WriteLiteral(" <th>"); Write(Strings.Common_Id); WriteLiteral("</th>\r\n <th class=\"min-width\">"); Write(Strings.RecurringJobsPage_Table_Cron); WriteLiteral("</th>\r\n <th>"); Write(Strings.RecurringJobsPage_Table_TimeZone); WriteLiteral("</th>\r\n <th>"); Write(Strings.Common_Job); WriteLiteral("</th>\r\n <th>"); Write(Strings.Common_Enqueued); WriteLiteral("</th>\r\n <th>"); Write(RayStrings.PeriodicJobsPage_Table_State); WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); Write(Strings.RecurringJobsPage_Table_LastExecution); WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); Write(Strings.RecurringJobsPage_Table_NextExecution); WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); Write(Strings.Common_Created); WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); Write(RayStrings.PeriodicJobsPage_Table_Operation); WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n " + " <tbody>\r\n"); foreach (var job in periodicJobs) { WriteLiteral(" <tr class=\"js-jobs-list-row\">\r\n\r\n " + " "); WriteLiteral("\r\n"); if (!IsReadOnly) { WriteLiteral(" <td rowspan=\""); Write(job.Error != null ? "2" : "1"); WriteLiteral("\">\r\n <input type=\"checkbox\" class=\"js-jobs" + "-list-checkbox\" name=\"jobs[]\" value=\""); Write(job.Id); WriteLiteral("\" />\r\n </td>\r\n"); } WriteLiteral(" <td class=\"word-break width-15\" style=\"min-width:" + " 80px\">"); Write(job.Id); WriteLiteral("</td>\r\n\r\n "); WriteLiteral("\r\n <td style=\"min-width: 125px\" class=\"min-width\">" + "\r\n"); var cronDisplay = job.GetCronDisplayInfo(); WriteLiteral("\r\n"); if (cronDisplay.Item2 != null) { WriteLiteral(" <code title=\""); Write(cronDisplay.Item2); WriteLiteral("\" class=\"cron-badge\">\r\n"); if (cronDisplay.Item1) { WriteLiteral(" <span class=\"glyphicon glyphicon-" + "exclamation-sign\"></span>\r\n"); } WriteLiteral(" "); Write(job.Cron); WriteLiteral("\r\n </code>\r\n"); } else { WriteLiteral(" <code class=\"cron-badge\">"); Write(job.Cron); WriteLiteral("</code>\r\n"); } WriteLiteral(" </td>\r\n\r\n "); WriteLiteral("\r\n <td>\r\n"); var timeZoneDisplayInfo = job.GetTimeZoneDisplayInfo(this.DashboardOptions); WriteLiteral(" <span title=\""); Write(timeZoneDisplayInfo.Item1); WriteLiteral("\" data-container=\"body\">\r\n "); Write(job.TimeZoneId); WriteLiteral("\r\n"); if (timeZoneDisplayInfo.Item2 != null) { WriteLiteral(" <span class=\"glyphicon glyphicon-excl" + "amation-sign\" title=\""); Write(timeZoneDisplayInfo.Item2.Message); WriteLiteral("\"></span>\r\n"); } WriteLiteral(" </span>\r\n </td" + ">\r\n\r\n "); WriteLiteral("\r\n <td class=\"word-break width-30\" style=\"min-widt" + "h: 100px\">\r\n"); if (job.Job != null) { WriteLiteral(" "); WriteLiteral(" "); Write(Html.JobName(job.Job)); WriteLiteral("\r\n"); } else if (job.LoadException != null && job.LoadException.InnerException != null) { WriteLiteral(" <em>"); Write(job.LoadException.InnerException.Message); WriteLiteral("</em>\r\n"); } else if (job.LoadException != null) { WriteLiteral(" <em>"); Write(job.LoadException.Message); WriteLiteral("</em>\r\n"); } else { WriteLiteral(" <em>"); Write(Strings.Common_NotAvailable); WriteLiteral("</em>\r\n"); } WriteLiteral(" </td>\r\n\r\n "); WriteLiteral("\r\n <td>"); Write(job.Queue); WriteLiteral("</td>\r\n\r\n "); WriteLiteral("\r\n <td>\r\n"); if (job.JobState == "Running") { WriteLiteral(" <span class=\"label label-success\">"); Write(job.JobState); WriteLiteral("</span>\r\n"); } else { WriteLiteral(" <span class=\"label label-danger\">"); Write(job.JobState); WriteLiteral("</span>\r\n"); } WriteLiteral(" </td>\r\n\r\n "); WriteLiteral("\r\n <td class=\"align-right min-width\">\r\n"); if (job.LastExecution != null) { if (!String.IsNullOrEmpty(job.LastJobId)) { WriteLiteral(" <a href=\""); Write(Url.JobDetails(job.LastJobId)); WriteLiteral("\" style=\"text-decoration: none\">\r\n " + " <span class=\"label label-default label-hover\" style=\""); Write($"background-color: {JobHistoryRenderer.GetForegroundStateColor(job.LastJobState ?? EnqueuedState.StateName)};"); WriteLiteral("\">\r\n "); Write(Html.RelativeTime(job.LastExecution.Value)); WriteLiteral("\r\n </span>\r\n " + " </a>\r\n"); } else { WriteLiteral(" <em>\r\n " + " "); Write(Strings.RecurringJobsPage_Canceled); WriteLiteral(" "); Write(Html.RelativeTime(job.LastExecution.Value)); WriteLiteral("\r\n </em>\r\n"); } } else { WriteLiteral(" <em>"); Write(Strings.Common_NotAvailable); WriteLiteral("</em>\r\n"); } WriteLiteral(" </td>\r\n\r\n "); WriteLiteral("\r\n <td class=\"align-right min-width\">\r\n"); if (!job.NextExecution.HasValue) { if (job.Error != null) { WriteLiteral(" <span class=\"label label-danger text-" + "uppercase\">"); Write(Strings.Common_Error); WriteLiteral("</span>\r\n"); } else { WriteLiteral(" <span class=\"label label-default text" + "-uppercase\" title=\""); Write(Strings.RecurringJobsPage_RecurringJobDisabled_Tooltip); WriteLiteral("\">"); Write(Strings.Common_Disabled); WriteLiteral("</span>\r\n"); } } else if (job.RetryAttempt > 0) { WriteLiteral(" <span class=\"label label-warning\">"); Write(Html.RelativeTime(job.NextExecution.Value)); WriteLiteral("</span>\r\n"); } else { Write(Html.RelativeTime(job.NextExecution.Value)); } WriteLiteral(" </td>\r\n\r\n "); WriteLiteral("\r\n <td class=\"align-right min-width\">\r\n"); if (job.CreatedAt != null) { Write(Html.RelativeTime(job.CreatedAt.Value)); } else { WriteLiteral(" <em>N/A</em>\r\n"); } WriteLiteral(" </td>\r\n\r\n "); WriteLiteral(@" <td style=""min-width:100px"" class=""align-right""> <button type=""button"" class=""js-periodic-jobs-list-edit btn btn-info btn-xs"" data-toggle=""modal"" data-target=""#myModal"" data-id="""); Write(job.Id); WriteLiteral("\">\r\n "); Write(RayStrings.PeriodicJobsPage_Edit); WriteLiteral("\r\n </button>\r\n"); if (job.JobStateEnum == JobState.Running) { WriteLiteral(" <button type=\"button\" class=\"js-period-jo" + "bs-list-command btn btn-warning btn-xs\"\r\n " + " data-url=\""); Write(Url.To($"{PeriodicJobPage.PageRoute}/stop?jobId={job.Id}")); WriteLiteral("\">\r\n Stop\r\n " + " </button>\r\n"); } if (job.JobStateEnum == JobState.Stoped) { WriteLiteral(" <button class=\"js-period-jobs-list-comman" + "d btn btn-success btn-xs\"\r\n data-url=\""); Write(Url.To($"{PeriodicJobPage.PageRoute}/start?jobId={job.Id}")); WriteLiteral("\">\r\n Start\r\n " + " </button>\r\n"); } WriteLiteral(" </td>\r\n\r\n"); if (job.Error != null) { WriteLiteral(" <tr>\r\n <td col" + "span=\""); Write(IsReadOnly ? "6" : "7"); WriteLiteral("\" class=\"failed-job-details\">\r\n <pre class" + "=\"stack-trace\"><code>"); Write(Html.StackTrace(job.Error)); WriteLiteral("</code></pre>\r\n </td>\r\n " + " </tr>\r\n"); } WriteLiteral(" </tr>\r\n"); } WriteLiteral(" </tbody>\r\n </table>\r\n </div>\r\n\r\n"); if (pager != null) { WriteLiteral(" "); WriteLiteral(" "); Write(Html.Paginator(pager)); WriteLiteral("\r\n"); } WriteLiteral(" </div>\r\n </div>\r\n</div>\r\n"); }
public override void Execute() { WriteLiteral("\r\n"); #line 11 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Layout = new LayoutPage(Strings.RecurringJobsPage_Title); List <RecurringJobDto> recurringJobs; int from, perPage; int.TryParse(Query("from"), out from); int.TryParse(Query("count"), out perPage); Pager pager = null; using (var connection = Storage.GetConnection()) { var storageConnection = connection as JobStorageConnection; if (storageConnection != null) { pager = new Pager(from, perPage, storageConnection.GetRecurringJobCount()); recurringJobs = storageConnection.GetRecurringJobs(pager.FromRecord, pager.FromRecord + pager.RecordsPerPage - 1); } else { recurringJobs = connection.GetRecurringJobs(); } } #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h1 class=\"page-header\"" + ">"); #line 39 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Title); #line default #line hidden WriteLiteral("</h1>\r\n"); #line 40 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (recurringJobs.Count == 0) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n "); #line 43 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_NoJobs); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 45 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <div class=\"js-jobs-list\">\r\n <div class=\"btn-toolbar b" + "tn-toolbar-top\">\r\n"); #line 50 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <button class=\"js-jobs-list-command btn btn-sm btn-primar" + "y\"\r\n data-url=\""); #line 53 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/trigger")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 54 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Triggering); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n " + " <span class=\"glyphicon glyphicon-play-circle\"></span>\r\n " + " "); #line 57 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_TriggerNow); #line default #line hidden WriteLiteral("\r\n </button>\r\n"); #line 59 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden #line 60 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <button class=\"js-jobs-list-command btn btn-sm btn-defaul" + "t\"\r\n data-url=\""); #line 63 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/remove")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 64 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Deleting); #line default #line hidden WriteLiteral("\"\r\n data-confirm=\""); #line 65 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_DeleteConfirm); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n " + " <span class=\"glyphicon glyphicon-remove\"></span>\r\n " + " "); #line 68 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Delete); #line default #line hidden WriteLiteral("\r\n </button>\r\n"); #line 70 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden #line 71 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <button class=\"js-jobs-list-command btn btn-sm btn-defaul" + "t\"\r\n data-url=\""); #line 74 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/start")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 75 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Start); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n " + " <span class=\"glyphicon glyphicon-play\"></span>\r\n " + ""); #line 78 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Start); #line default #line hidden WriteLiteral("\r\n </button>\r\n"); #line 80 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden #line 81 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <button class=\"js-jobs-list-command btn btn-sm btn-defaul" + "t\"\r\n data-url=\""); #line 84 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/stop")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 85 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Stop); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n " + " <span class=\"glyphicon glyphicon-pause\"></span>\r\n " + " "); #line 88 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Stop); #line default #line hidden WriteLiteral("\r\n </button>\r\n"); #line 90 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden #line 91 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 93 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.PerPageSelector(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 94 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n\r\n <div class=\"table-responsive\">\r\n " + " <table class=\"table\">\r\n <thead>\r\n " + " <tr>\r\n"); #line 101 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <th class=\"min-width\">\r\n " + " <input type=\"checkbox\" class=\"js-jobs-list-select-all\" />\r\n " + " </th>\r\n"); #line 106 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" <th class=\"min-width\">"); #line 107 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Id); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 108 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_Cron); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 109 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_TimeZone); #line default #line hidden WriteLiteral("</th>\r\n <th>"); #line 110 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Job); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 111 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_NextExecution); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 112 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_LastExecution); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 113 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Created); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 114 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Status); #line default #line hidden WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n " + " <tbody>\r\n"); #line 118 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" foreach (var job in recurringJobs) { #line default #line hidden WriteLiteral(" <tr class=\"js-jobs-list-row hover\">\r\n"); #line 121 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <td>\r\n " + " <input type=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"jobs[]\" valu" + "e=\""); #line 124 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Id); #line default #line hidden WriteLiteral("\" />\r\n </td>\r\n"); #line 126 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" <td class=\"min-width\">"); #line 127 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Id); #line default #line hidden WriteLiteral("</td>\r\n <td class=\"min-width\">\r\n " + " "); WriteLiteral("\r\n"); #line 130 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" string cronDescription = null; bool cronError = false; if (!String.IsNullOrEmpty(job.Cron)) { try { RecurringJobEntity.ParseCronExpression(job.Cron); } catch (Exception ex) { cronDescription = ex.Message; cronError = true; } if (cronDescription == null) { #if FEATURE_CRONDESCRIPTOR try { cronDescription = CronExpressionDescriptor.ExpressionDescriptor.GetDescription(job.Cron); } catch (FormatException) { } #endif } } #line default #line hidden WriteLiteral("\r\n"); #line 161 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (cronDescription != null) { #line default #line hidden WriteLiteral(" <code title=\""); #line 163 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(cronDescription); #line default #line hidden WriteLiteral("\">\r\n"); #line 164 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (cronError) { #line default #line hidden WriteLiteral(" <span class=\"glyphicon glyphi" + "con-exclamation-sign\"></span>\r\n"); #line 167 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" "); #line 168 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Cron); #line default #line hidden WriteLiteral("\r\n </code>\r\n"); #line 170 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <code>"); #line 173 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Cron); #line default #line hidden WriteLiteral("</code>\r\n"); #line 174 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"min-width\">\r\n"); #line 177 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!String.IsNullOrWhiteSpace(job.TimeZoneId)) { string displayName; Exception exception = null; try { var resolver = DashboardOptions.TimeZoneResolver ?? new DefaultTimeZoneResolver(); displayName = resolver.GetTimeZoneById(job.TimeZoneId).DisplayName; } catch (Exception ex) { displayName = null; exception = ex; } #line default #line hidden WriteLiteral(" <span title=\""); #line 193 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(displayName); #line default #line hidden WriteLiteral("\" data-container=\"body\">\r\n "); #line 194 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.TimeZoneId); #line default #line hidden WriteLiteral("\r\n"); #line 195 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (exception != null) { #line default #line hidden WriteLiteral(" <span class=\"glyphicon glyphi" + "con-exclamation-sign\" title=\""); #line 197 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(exception.Message); #line default #line hidden WriteLiteral("\"></span>\r\n"); #line 198 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </span>\r\n"); #line 200 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" "); WriteLiteral(" UTC\r\n"); #line 204 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"word-break\">\r\n"); #line 207 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.Job != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 209 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.JobName(job.Job)); #line default #line hidden WriteLiteral("\r\n"); #line 210 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else if (job.LoadException != null && job.LoadException.InnerException != null) { #line default #line hidden WriteLiteral(" <em>"); #line 213 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.LoadException.InnerException.Message); #line default #line hidden WriteLiteral("</em>\r\n"); #line 214 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else if (job.LoadException != null) { #line default #line hidden WriteLiteral(" <em>"); #line 217 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.LoadException.Message); #line default #line hidden WriteLiteral("</em>\r\n"); #line 218 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>"); #line 221 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 222 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 225 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.NextExecution != null) { #line default #line hidden #line 227 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.NextExecution.Value)); #line default #line hidden #line 227 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { if (!String.IsNullOrEmpty(job.Error)) { #line default #line hidden WriteLiteral(" <span class=\"label label-danger t" + "ext-uppercase\" title=\""); #line 233 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Error); #line default #line hidden WriteLiteral("\">"); #line 233 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Error); #line default #line hidden WriteLiteral("</span>\r\n"); #line 234 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <span class=\"label label-warning " + "text-uppercase\" title=\""); #line 237 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_RecurringJobDisabled_Tooltip); #line default #line hidden WriteLiteral("\">"); #line 237 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Disabled); #line default #line hidden WriteLiteral("</span>\r\n"); #line 238 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 242 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.LastExecution != null) { if (!String.IsNullOrEmpty(job.LastJobId)) { #line default #line hidden WriteLiteral(" <a href=\""); #line 246 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.JobDetails(job.LastJobId)); #line default #line hidden WriteLiteral("\" style=\"text-decoration: none\">\r\n " + " <span class=\"label label-default label-hover\" style=\""); #line 247 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write($"background-color: {JobHistoryRenderer.GetForegroundStateColor(job.LastJobState ?? EnqueuedState.StateName)};"); #line default #line hidden WriteLiteral("\">\r\n "); #line 248 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </span>\r\n " + " </a>\r\n"); #line 251 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>\r\n " + " "); #line 255 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Canceled); #line default #line hidden WriteLiteral(" "); #line 255 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </em>\r\n"); #line 257 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } } else { #line default #line hidden WriteLiteral(" <em>"); #line 261 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 262 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 265 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.CreatedAt != null) { #line default #line hidden #line 267 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.CreatedAt.Value)); #line default #line hidden #line 267 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 272 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n "); #line 275 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.IsActive ? "Active" : "Passive"); #line default #line hidden WriteLiteral("\r\n </td>\r\n </tr" + ">\r\n"); #line 278 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </tbody>\r\n </table>\r\n <" + "/div>\r\n\r\n"); #line 283 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 285 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.Paginator(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 286 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 288 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n</div> "); }
public override void Execute() { WriteLiteral("\r\n"); #line 9 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Layout = new LayoutPage(Strings.RecurringJobsPage_Title); List <RecurringJobDto> recurringJobs; int from, perPage; int.TryParse(Query("from"), out from); int.TryParse(Query("count"), out perPage); Pager pager = null; using (var connection = Storage.GetConnection()) { var storageConnection = connection as JobStorageConnection; if (storageConnection != null) { pager = new Pager(from, perPage, storageConnection.GetRecurringJobCount()); recurringJobs = storageConnection.GetRecurringJobs(pager.FromRecord, pager.FromRecord + pager.RecordsPerPage - 1); } else { recurringJobs = connection.GetRecurringJobs(); } } #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h1 class=\"page-header\"" + ">"); #line 37 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Title); #line default #line hidden WriteLiteral(" <button type=\"button\" class=\"btn\" style=\"float: inherit;margin-right: 10px\" id=\"" + "addBackgroundJob\">新增周期性作业</button>\r\n <a style=\"margin-right: 10px; " + " font-size: 15px;\" href=\"corn\">Corn在线生成</a></h1>\r\n\r\n"); #line 40 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (recurringJobs.Count == 0) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n "); #line 43 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_NoJobs); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 45 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <div class=\"js-jobs-list\">\r\n <div class=\"btn-toolbar b" + "tn-toolbar-top\">\r\n <button class=\"js-jobs-list-command btn bt" + "n-sm btn-primary\"\r\n data-url=\""); #line 51 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/trigger")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 52 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Triggering); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <spa" + "n class=\"glyphicon glyphicon-play-circle\"></span>\r\n "); #line 55 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_TriggerNow); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n <button class=\"js-jobs-lis" + "t-command btn btn-sm btn-default\"\r\n data-url=\""); #line 59 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/remove")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 60 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Deleting); #line default #line hidden WriteLiteral("\"\r\n data-confirm=\""); #line 61 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_DeleteConfirm); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <spa" + "n class=\"glyphicon glyphicon-remove\"></span>\r\n "); #line 64 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Delete); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n"); #line 67 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 69 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.PerPageSelector(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 70 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(@" </div> <div class=""table-responsive""> <table class=""table""> <thead> <tr> <th class=""min-width""> <input type=""checkbox"" class=""js-jobs-list-select-all"" /> </th> <th class=""min-width"">"); #line 80 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Id); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 81 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_Cron); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 82 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_TimeZone); #line default #line hidden WriteLiteral("</th>\r\n <th>"); #line 83 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Job); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 84 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_NextExecution); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 85 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_LastExecution); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 86 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Created); #line default #line hidden WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n " + " <tbody>\r\n"); #line 90 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" foreach (var job in recurringJobs) { #line default #line hidden WriteLiteral(" <tr class=\"js-jobs-list-row hover\">\r\n " + " <td>\r\n <input typ" + "e=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"jobs[]\" value=\""); #line 94 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Id); #line default #line hidden WriteLiteral("\" />\r\n </td>\r\n " + " <td class=\"min-width\">"); #line 96 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Id); #line default #line hidden WriteLiteral("</td>\r\n <td class=\"min-width\">\r\n " + " "); WriteLiteral("\r\n"); #line 99 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" string cronDescription = null; #if NETFULL try { cronDescription = CronExpressionDescriptor.ExpressionDescriptor.GetDescription(job.Cron); } catch (FormatException) { } #endif #line default #line hidden WriteLiteral("\r\n"); #line 112 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (cronDescription != null) { #line default #line hidden WriteLiteral(" <code title=\""); #line 114 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(cronDescription); #line default #line hidden WriteLiteral("\">"); #line 114 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Cron); #line default #line hidden WriteLiteral("</code>\r\n"); #line 115 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <code>"); #line 118 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Cron); #line default #line hidden WriteLiteral("</code>\r\n"); #line 119 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"min-width\">\r\n"); #line 122 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!String.IsNullOrWhiteSpace(job.TimeZoneId)) { #line default #line hidden WriteLiteral(" <span title=\""); #line 124 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(TimeZoneInfo.FindSystemTimeZoneById(job.TimeZoneId).DisplayName); #line default #line hidden WriteLiteral("\" data-container=\"body\">"); #line 124 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.TimeZoneId); #line default #line hidden WriteLiteral("</span>\r\n"); #line 125 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" "); WriteLiteral(" UTC\r\n"); #line 129 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"word-break\">\r\n"); #line 132 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.Job != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 134 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.JobName(job.Job)); #line default #line hidden WriteLiteral("\r\n"); #line 135 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>"); #line 138 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.LoadException.InnerException.Message); #line default #line hidden WriteLiteral("</em>\r\n"); #line 139 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 142 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.NextExecution != null) { #line default #line hidden #line 144 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.NextExecution.Value)); #line default #line hidden #line 144 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>"); #line 148 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 149 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 152 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.LastExecution != null) { if (!String.IsNullOrEmpty(job.LastJobId)) { #line default #line hidden WriteLiteral(" <a href=\""); #line 156 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.JobDetails(job.LastJobId)); #line default #line hidden WriteLiteral("\">\r\n <span class=\"label label-" + "default label-hover\" style=\""); #line 157 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write($"background-color: {JobHistoryRenderer.GetForegroundStateColor(job.LastJobState)};"); #line default #line hidden WriteLiteral("\">\r\n "); #line 158 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </span>\r\n " + " </a>\r\n"); #line 161 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>\r\n " + " "); #line 165 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Canceled); #line default #line hidden WriteLiteral(" "); #line 165 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </em>\r\n"); #line 167 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } } else { #line default #line hidden WriteLiteral(" <em>"); #line 171 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 172 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 175 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.CreatedAt != null) { #line default #line hidden #line 177 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.CreatedAt.Value)); #line default #line hidden #line 177 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 182 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r" + "\n"); #line 185 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </tbody>\r\n </table>\r\n <" + "/div>\r\n\r\n"); #line 190 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 192 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.Paginator(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 193 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 195 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(@" <div class=""modal inmodal"" id=""addBackgroundJobModal"" tabindex=""-1"" role=""dialog"" aria-hidden=""true""> <div class=""modal-dialog""> <div class=""modal-content""> <div class=""modal-header""> <h4 class=""modal-title"">新增作业</h4> </div> <div class=""modal-body""> <div class=""editor_holder"" style=""height: 250px;""></div> </div> <div class=""modal-footer""> <button type=""button"" class=""btn btn-white"" id=""addBackgroundJob_close-model"">关闭</button> <button type=""button"" class=""btn btn-primary"" id=""addBackgroundJob_save-model"" data-url="""); #line 207 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.WebApiUrl("CreateRecurringJob")); #line default #line hidden WriteLiteral("\">提交</button>\r\n </div>\r\n </div>\r\n </" + "div>\r\n </div>\r\n </div>\r\n</div> "); }
public override void Execute() { WriteLiteral("\r\n"); #line 9 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Layout = new LayoutPage("Awaiting Jobs"); int from, perPage; int.TryParse(Query("from"), out from); int.TryParse(Query("count"), out perPage); List <string> jobIds = null; Pager pager = null; using (var connection = Storage.GetConnection()) { var storageConnection = connection as JobStorageConnection; if (storageConnection != null) { pager = new Pager(from, perPage, storageConnection.GetSetCount("awaiting")); jobIds = storageConnection.GetRangeFromSet("awaiting", pager.FromRecord, pager.FromRecord + pager.RecordsPerPage - 1); } } #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n "); #line 34 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.JobsSidebar()); #line default #line hidden WriteLiteral("\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 class=\"page-header\">Awaitin" + "g Jobs</h1>\r\n\r\n"); #line 39 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" if (jobIds == null) { #line default #line hidden WriteLiteral(@" <div class=""alert alert-warning""> <h4>Continuations are working, but this page can't be displayed</h4> <p> Don't worry, continuations are working as expected. But your current job storage does not support some queries required to show this page. Please try to update your storage or wait until the full command set is implemented. </p> </div> "); #line 49 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else if (jobIds.Count > 0) { #line default #line hidden WriteLiteral(" <div class=\"js-jobs-list\">\r\n <div class=\"btn-toolbar b" + "tn-toolbar-top\">\r\n <button class=\"js-jobs-list-command btn bt" + "n-sm btn-primary\"\r\n data-url=\""); #line 55 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Url.To("/jobs/awaiting/enqueue")); #line default #line hidden WriteLiteral(@""" data-loading-text=""Enqueueing...""> <span class=""glyphicon glyphicon-repeat""></span> Enqueue jobs </button> <button class=""js-jobs-list-command btn btn-sm btn-default"" data-url="""); #line 62 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Url.To("/jobs/awaiting/delete")); #line default #line hidden WriteLiteral(@""" data-loading-text=""Deleting..."" data-confirm=""Do you really want to DELETE ALL selected jobs?""> <span class=""glyphicon glyphicon-remove""></span> Delete selected </button> "); #line 69 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.PerPageSelector(pager)); #line default #line hidden WriteLiteral(@" </div> <table class=""table table-hover""> <thead> <tr> <th class=""min-width""> <input type=""checkbox"" class=""js-jobs-list-select-all"" /> </th> <th class=""min-width"">Id</th> <th>Job</th> <th class=""min-width"">Options</th> <th class=""min-width"">Parent</th> <th class=""align-right"">Created</th> </tr> </thead> <tbody> "); #line 86 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" foreach (var jobId in jobIds) { JobData jobData; StateData stateData; StateData parentStateData = null; using (var connection = Storage.GetConnection()) { jobData = connection.GetJobData(jobId); stateData = connection.GetStateData(jobId); if (stateData != null && stateData.Name == AwaitingState.StateName) { parentStateData = connection.GetStateData(stateData.Data["ParentId"]); } } #line default #line hidden WriteLiteral(" <tr class=\"js-jobs-list-row "); #line 103 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(jobData != null ? "hover" : null); #line default #line hidden WriteLiteral("\">\r\n <td>\r\n <in" + "put type=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"jobs[]\" value=\""); #line 105 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(jobId); #line default #line hidden WriteLiteral("\" />\r\n </td>\r\n <td " + "class=\"min-width\">\r\n "); #line 108 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.JobIdLink(jobId)); #line default #line hidden WriteLiteral("\r\n </td>\r\n"); #line 110 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" if (jobData == null) { #line default #line hidden WriteLiteral(" <td colspan=\"2\"><em>Job expired.</em></td>\r\n"); #line 113 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <td>\r\n " + " "); #line 117 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.JobNameLink(jobId, jobData.Job)); #line default #line hidden WriteLiteral("\r\n </td>\r\n"); WriteLiteral(" <td class=\"min-width\">\r\n"); #line 120 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" if (stateData != null && stateData.Data.ContainsKey("Options") && !String.IsNullOrWhiteSpace(stateData.Data["Options"])) { #line default #line hidden WriteLiteral(" <code>"); #line 122 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(stateData.Data["Options"]); #line default #line hidden WriteLiteral("</code>\r\n"); #line 123 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 127 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n"); WriteLiteral(" <td class=\"min-width\">\r\n"); #line 130 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" if (parentStateData != null) { #line default #line hidden WriteLiteral(" <a href=\""); #line 132 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Url.JobDetails(stateData.Data["ParentId"])); #line default #line hidden WriteLiteral("\">\r\n <span class=\"label label-defa" + "ult label-hover\" style=\""); #line 133 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(String.Format("background-color: {0};", JobHistoryRenderer.GetForegroundStateColor(parentStateData.Name))); #line default #line hidden WriteLiteral("\">\r\n "); #line 134 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(parentStateData.Name); #line default #line hidden WriteLiteral("\r\n </span>\r\n " + " </a>\r\n"); #line 137 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 141 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n"); WriteLiteral(" <td class=\"min-width align-right\">\r\n " + " "); #line 144 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.RelativeTime(jobData.CreatedAt)); #line default #line hidden WriteLiteral("\r\n </td>\r\n"); #line 146 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </tr>\r\n"); #line 148 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </tbody>\r\n </table>\r\n "); #line 151 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" Write(Html.Paginator(pager)); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 153 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n No jobs found in awai" + "ting state.\r\n </div>\r\n"); #line 159 "..\..\Dashboard\Pages\AwaitingJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n</div>\r\n"); }
public override void Execute() { WriteLiteral("\r\n"); #line 10 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Layout = new LayoutPage(Strings.RecurringJobsPage_Title); List <RecurringJobDto> recurringJobs; int from, perPage; int.TryParse(Query("from"), out from); int.TryParse(Query("count"), out perPage); Pager pager = null; using (var connection = Storage.GetConnection()) { var storageConnection = connection as JobStorageConnection; if (storageConnection != null) { pager = new Pager(from, perPage, storageConnection.GetRecurringJobCount()); recurringJobs = storageConnection.GetRecurringJobs(pager.FromRecord, pager.FromRecord + pager.RecordsPerPage - 1); } else { recurringJobs = connection.GetRecurringJobs(); } } #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h1 class=\"page-header\"" + ">"); #line 38 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Title); #line default #line hidden WriteLiteral("</h1>\r\n\r\n"); #line 40 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (recurringJobs.Count == 0) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n "); #line 43 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_NoJobs); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 45 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <div class=\"js-jobs-list\">\r\n <div class=\"btn-toolbar b" + "tn-toolbar-top\">\r\n <button class=\"js-jobs-list-command btn bt" + "n-sm btn-primary\"\r\n data-url=\""); #line 51 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/trigger")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 52 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Triggering); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <spa" + "n class=\"glyphicon glyphicon-play-circle\"></span>\r\n "); #line 55 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_TriggerNow); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n <button class=\"js-jobs-lis" + "t-command btn btn-sm btn-default\"\r\n data-url=\""); #line 59 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/disable")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 60 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Disabling); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <spa" + "n class=\"glyphicon glyphicon-pause\"></span>\r\n "); #line 63 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Disable); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n <button class=\"js-jobs-lis" + "t-command btn btn-sm btn-default\"\r\n data-url=\""); #line 67 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/enable")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 68 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Enabling); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <spa" + "n class=\"glyphicon glyphicon-play\"></span>\r\n "); #line 71 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Enable); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n <button class=\"js-jobs-lis" + "t-command btn btn-sm btn-default\"\r\n data-url=\""); #line 75 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/remove")); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 76 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Deleting); #line default #line hidden WriteLiteral("\"\r\n data-confirm=\""); #line 77 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_DeleteConfirm); #line default #line hidden WriteLiteral("\"\r\n disabled=\"disabled\">\r\n <spa" + "n class=\"glyphicon glyphicon-remove\"></span>\r\n "); #line 80 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Delete); #line default #line hidden WriteLiteral("\r\n </button>\r\n\r\n"); #line 83 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 85 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.PerPageSelector(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 86 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(@" </div> <div class=""table-responsive""> <table class=""table""> <thead> <tr> <th class=""min-width""> <input type=""checkbox"" class=""js-jobs-list-select-all"" /> </th> <th class=""min-width"">"); #line 96 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Id); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 97 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_Cron); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 98 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_TimeZone); #line default #line hidden WriteLiteral("</th>\r\n <th>"); #line 99 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Job); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 100 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_NextExecution); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 101 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Table_LastExecution); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right min-width\">"); #line 102 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_Created); #line default #line hidden WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n " + " <tbody>\r\n"); #line 106 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" foreach (var job in recurringJobs) { #line default #line hidden WriteLiteral(" <tr class=\"js-jobs-list-row hover\">\r\n " + " <td>\r\n <input typ" + "e=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"jobs[]\" value=\""); #line 110 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Id); #line default #line hidden WriteLiteral("\" />\r\n </td>\r\n " + " <td class=\"min-width\">"); #line 112 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Id); #line default #line hidden WriteLiteral("\r\n"); #line 113 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.Disabled) { #line default #line hidden WriteLiteral(" <br/>"); WriteLiteral("<span class=\"metric-warning\">("); #line 115 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Disabled); #line default #line hidden WriteLiteral(")</span> \r\n"); #line 116 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"min-width\">\r\n "); WriteLiteral("\r\n"); #line 120 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" string cronDescription = null; #if NETFULL try { cronDescription = string.IsNullOrEmpty(job.Cron) ? null : CronExpressionDescriptor.ExpressionDescriptor.GetDescription(job.Cron); } catch (FormatException) { } #endif #line default #line hidden WriteLiteral("\r\n"); #line 133 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (cronDescription != null) { #line default #line hidden WriteLiteral(" <code title=\""); #line 135 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(cronDescription); #line default #line hidden WriteLiteral("\">"); #line 135 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Cron); #line default #line hidden WriteLiteral("</code>\r\n"); #line 136 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <code>"); #line 139 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Cron); #line default #line hidden WriteLiteral("</code>\r\n"); #line 140 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"word-break\">\r\n"); #line 143 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!String.IsNullOrWhiteSpace(job.TimeZoneId)) { #line default #line hidden WriteLiteral(" <span title=\""); #line 145 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(TimeZoneInfo.FindSystemTimeZoneById(job.TimeZoneId).DisplayName); #line default #line hidden WriteLiteral("\" data-container=\"body\">"); #line 145 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.TimeZoneId); #line default #line hidden WriteLiteral("</span>\r\n"); #line 146 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" "); WriteLiteral(" UTC\r\n"); #line 150 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"word-break\">\r\n"); #line 153 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.Job != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 155 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.JobName(job.Job)); #line default #line hidden WriteLiteral("\r\n"); #line 156 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>"); #line 159 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.LoadException.InnerException.Message); #line default #line hidden WriteLiteral("</em>\r\n"); #line 160 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 163 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.NextExecution != null) { #line default #line hidden #line 165 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.NextExecution.Value)); #line default #line hidden #line 165 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>"); #line 169 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 170 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 173 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.LastExecution != null) { if (!String.IsNullOrEmpty(job.LastJobId)) { #line default #line hidden WriteLiteral(" <a href=\""); #line 177 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.JobDetails(job.LastJobId)); #line default #line hidden WriteLiteral("\">\r\n <span class=\"label label-" + "default label-hover\" style=\""); #line 178 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write($"background-color: {JobHistoryRenderer.GetForegroundStateColor(job.LastJobState ?? EnqueuedState.StateName)};"); #line default #line hidden WriteLiteral("\">\r\n "); #line 179 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </span>\r\n " + " </a>\r\n"); #line 182 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>\r\n " + " "); #line 186 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.RecurringJobsPage_Canceled); #line default #line hidden WriteLiteral(" "); #line 186 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </em>\r\n"); #line 188 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } } else { #line default #line hidden WriteLiteral(" <em>"); #line 192 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Strings.Common_NotAvailable); #line default #line hidden WriteLiteral("</em>\r\n"); #line 193 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <t" + "d class=\"align-right min-width\">\r\n"); #line 196 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.CreatedAt != null) { #line default #line hidden #line 198 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.CreatedAt.Value)); #line default #line hidden #line 198 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 203 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r" + "\n"); #line 206 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </tbody>\r\n </table>\r\n <" + "/div>\r\n\r\n"); #line 211 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 213 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.Paginator(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 214 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 216 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n</div> "); }
public override void Execute() { WriteLiteral("\r\n"); #line 9 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Layout = new LayoutPage("Recurring jobs"); List <RecurringJobDto> recurringJobs; int from, perPage; int.TryParse(Query("from"), out from); int.TryParse(Query("count"), out perPage); Pager pager = null; using (var connection = Storage.GetConnection()) { var storageConnection = connection as JobStorageConnection; if (storageConnection != null) { pager = new Pager(from, perPage, storageConnection.GetRecurringJobCount()); recurringJobs = storageConnection.GetRecurringJobs(pager.FromRecord, pager.FromRecord + pager.RecordsPerPage - 1); } else { recurringJobs = connection.GetRecurringJobs(); } } #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h1 class=\"page-header\"" + ">Recurring Jobs</h1>\r\n\r\n"); #line 39 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (recurringJobs.Count == 0) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n No recurring jobs fou" + "nd.\r\n </div>\r\n"); #line 44 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <div class=\"js-jobs-list\">\r\n <div class=\"btn-toolbar b" + "tn-toolbar-top\">\r\n <button class=\"js-jobs-list-command btn bt" + "n-sm btn-primary\"\r\n data-url=\""); #line 50 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/trigger")); #line default #line hidden WriteLiteral(@""" data-loading-text=""Triggering..."" disabled=""disabled""> <span class=""glyphicon glyphicon-play-circle""></span> Trigger now </button> <button class=""js-jobs-list-command btn btn-sm btn-default"" data-url="""); #line 58 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.To("/recurring/remove")); #line default #line hidden WriteLiteral(@""" data-loading-text=""Removing..."" data-confirm=""Do you really want to REMOVE ALL selected jobs?"" disabled=""disabled""> <span class=""glyphicon glyphicon-remove""></span> Remove </button> "); #line 66 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 68 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.PerPageSelector(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 69 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(@" </div> <table class=""table""> <thead> <tr> <th class=""min-width""> <input type=""checkbox"" class=""js-jobs-list-select-all""/> </th> <th class=""min-width"">Id</th> <th class=""min-width"">Cron</th> <th>Time zone</th> <th>Job</th> <th class=""align-right min-width"">Next execution</th> <th class=""align-right min-width"">Last execution</th> <th class=""align-right min-width"">Created At</th> </tr> </thead> <tbody> "); #line 88 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" foreach (var job in recurringJobs) { #line default #line hidden WriteLiteral(" <tr class=\"js-jobs-list-row hover\">\r\n " + " <td>\r\n <input type=\"checkbox\" class=\"js-j" + "obs-list-checkbox\" name=\"jobs[]\" value=\""); #line 92 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Id); #line default #line hidden WriteLiteral("\"/>\r\n </td>\r\n <td class=\"mi" + "n-width\">"); #line 94 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.Id); #line default #line hidden WriteLiteral("</td>\r\n <td class=\"min-width\">\r\n " + " "); WriteLiteral("\r\n"); #line 97 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" var cronDescription = job.Cron; try { cronDescription = ExpressionDescriptor.GetDescription(job.Cron); } catch (FormatException) { } #line default #line hidden WriteLiteral(" "); #line 107 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(cronDescription); #line default #line hidden WriteLiteral("\r\n </td>\r\n <td class=\"min-w" + "idth\">\r\n"); #line 110 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (!String.IsNullOrWhiteSpace(job.TimeZoneId)) { #line default #line hidden WriteLiteral(" <span title=\""); #line 112 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(TimeZoneInfo.FindSystemTimeZoneById(job.TimeZoneId).DisplayName); #line default #line hidden WriteLiteral("\" data-container=\"body\">"); #line 112 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.TimeZoneId); #line default #line hidden WriteLiteral("</span>\r\n"); #line 113 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" "); WriteLiteral(" UTC\r\n"); #line 117 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <td>\r\n"); #line 120 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.Job != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 122 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.JobName(job.Job)); #line default #line hidden WriteLiteral("\r\n"); #line 123 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>"); #line 126 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(job.LoadException.InnerException.Message); #line default #line hidden WriteLiteral("</em>\r\n"); #line 127 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <td class=\"align-r" + "ight min-width\">\r\n"); #line 130 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.NextExecution != null) { #line default #line hidden #line 132 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.NextExecution.Value)); #line default #line hidden #line 132 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 137 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <td class=\"align-r" + "ight min-width\">\r\n"); #line 140 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.LastExecution != null) { if (!String.IsNullOrEmpty(job.LastJobId)) { #line default #line hidden WriteLiteral(" <a href=\""); #line 144 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Url.JobDetails(job.LastJobId)); #line default #line hidden WriteLiteral("\">\r\n <span class=\"label label-default " + "label-hover\" style=\""); #line 145 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(String.Format("background-color: {0};", JobHistoryRenderer.GetForegroundStateColor(job.LastJobState))); #line default #line hidden WriteLiteral("\">\r\n "); #line 146 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </span>\r\n " + " </a>\r\n"); #line 149 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>\r\n " + " Canceled\r\n "); #line 154 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.LastExecution.Value)); #line default #line hidden WriteLiteral("\r\n </em>\r\n"); #line 156 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 161 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n <td class=\"align-r" + "ight min-width\">\r\n"); #line 164 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (job.CreatedAt != null) { #line default #line hidden #line 166 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.RelativeTime(job.CreatedAt.Value)); #line default #line hidden #line 166 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <em>N/A</em>\r\n"); #line 171 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </td>\r\n </tr>\r\n"); #line 174 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </tbody>\r\n </table>\r\n\r\n"); #line 178 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" if (pager != null) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 180 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" Write(Html.Paginator(pager)); #line default #line hidden WriteLiteral("\r\n"); #line 181 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 183 "..\..\Dashboard\Pages\RecurringJobsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n</div> "); }
public override void Execute() { WriteLiteral("\r\n"); #line 14 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" var monitor = Storage.GetMonitoringApi(); var job = monitor.JobDetails(JobId); string title = null; if (job != null) { title = job.Job != null?Html.JobName(job.Job) : null; job.History.Add(new StateHistoryDto { StateName = "Created", CreatedAt = job.CreatedAt ?? default(DateTime) }); } title = title ?? Strings.Common_Job; Layout = new LayoutPage(title); #line default #line hidden WriteLiteral("\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n "); #line 32 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobsSidebar()); #line default #line hidden WriteLiteral("\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 class=\"page-header\">"); #line 35 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(title); #line default #line hidden WriteLiteral("</h1>\r\n\r\n"); #line 37 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job == null) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-warning\">\r\n "); #line 40 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(String.Format(Strings.JobDetailsPage_JobExpired, JobId)); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 42 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { var currentState = job.History[0]; if (currentState.StateName == ProcessingState.StateName) { var server = monitor.Servers().FirstOrDefault(x => x.Name == currentState.Data["ServerId"]); if (server == null) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-danger\">\r\n "); #line 52 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.Raw(String.Format(Strings.JobDetailsPage_JobAbortedNotActive_Warning_Html, currentState.Data["ServerId"], Url.To("/servers")))); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 54 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else if (server.Heartbeat.HasValue && server.Heartbeat < DateTime.UtcNow.AddMinutes(-1)) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-warning\">\r\n "); #line 58 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.Raw(String.Format(Strings.JobDetailsPage_JobAbortedWithHeartbeat_Warning_Html, server.Name))); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 60 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } } if (job.ExpireAt.HasValue) { #line default #line hidden WriteLiteral(" <div class=\"alert alert-info\">\r\n "); #line 66 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.Raw(String.Format(Strings.JobDetailsPage_JobFinished_Warning_Html, JobHelper.ToTimestamp(job.ExpireAt.Value), job.ExpireAt))); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 68 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } if (job.Job != null) { #line default #line hidden WriteLiteral(" <div class=\"job-snippet\">\r\n <div class=\"job-sn" + "ippet-code\">\r\n <pre><code><span class=\"comment\">// "); #line 74 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.JobDetailsPage_JobId); #line default #line hidden WriteLiteral(": "); #line 74 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobId(JobId.ToString(), false)); #line default #line hidden WriteLiteral("</span>\r\n"); #line 75 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(JobMethodCallRenderer.Render(job.Job)); #line default #line hidden WriteLiteral("\r\n</code></pre>\r\n </div>\r\n </div>\r\n"); #line 79 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { var dbgProperties = job.Properties.Where(x => x.Key.StartsWith("DBG_")).ToArray(); #line default #line hidden WriteLiteral(" <div class=\"alert alert-warning\">\r\n <h4>"); #line 85 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_CannotFindTargetMethod); #line default #line hidden WriteLiteral("</h4>\r\n <table class=\"table table-condensed job-snippet-proper" + "ties\" style=\"margin-bottom: 0;\">\r\n <tr>\r\n " + " <td>"); #line 88 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.JobDetailsPage_JobId); #line default #line hidden WriteLiteral("</td>\r\n <td><pre><code>"); #line 89 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobId(JobId, false)); #line default #line hidden WriteLiteral("</code></pre></td>\r\n </tr>\r\n"); #line 91 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" foreach (var property in dbgProperties) { #line default #line hidden WriteLiteral(" <tr>\r\n <td style=\"widt" + "h: 15%;\">"); #line 94 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(property.Key.Substring(4)); #line default #line hidden WriteLiteral("</td>\r\n <td><pre><code>"); #line 95 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(property.Value); #line default #line hidden WriteLiteral("</code></pre></td>\r\n </tr>\r\n"); #line 97 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </table>\r\n </div>\r\n"); #line 100 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } var displayProperties = job.Properties.Where(x => !x.Key.StartsWith("DBG_") && x.Key != "Continuations").ToArray(); if (displayProperties.Length > 0) { #line default #line hidden WriteLiteral(" <h3>Properties</h3>\r\n"); WriteLiteral(" <table class=\"table table-condensed job-snippet-properties\">\r\n"); #line 108 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" foreach (var property in displayProperties) { #line default #line hidden WriteLiteral(" <tr>\r\n <td style=\"width: 20%; " + "word-break: break-all;\">"); #line 111 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(property.Key); #line default #line hidden WriteLiteral("</td>\r\n <td><pre><code>"); #line 112 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(property.Value); #line default #line hidden WriteLiteral("</code></pre></td>\r\n </tr>\r\n"); #line 114 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </table>\r\n"); #line 116 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } if (job.Properties.TryGetValue("Continuations", out var serializedContinuations)) { var continuations = ContinuationsSupportAttribute.DeserializeContinuations(serializedContinuations); if (continuations.Count > 0) { #line default #line hidden WriteLiteral(" <h3>"); #line 124 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Continuations); #line default #line hidden WriteLiteral("</h3>\r\n"); WriteLiteral(" <div class=\"table-responsive\">\r\n <tabl" + "e class=\"table\">\r\n <thead>\r\n " + " <tr>\r\n <th class=\"min-width\">"); #line 129 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Id); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 130 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Condition); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"min-width\">"); #line 131 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_State); #line default #line hidden WriteLiteral("</th>\r\n <th>"); #line 132 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Job); #line default #line hidden WriteLiteral("</th>\r\n <th class=\"align-right\">"); #line 133 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Created); #line default #line hidden WriteLiteral("</th>\r\n </tr>\r\n </thead>\r\n " + " <tbody>\r\n"); #line 137 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" foreach (var continuation in continuations) { JobData jobData; using (var connection = Storage.GetConnection()) { jobData = connection.GetJobData(continuation.JobId); } #line default #line hidden WriteLiteral(" <tr>\r\n"); #line 147 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (jobData == null) { #line default #line hidden WriteLiteral(" <td colspan=\"5\"><em>"); #line 149 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(String.Format(Strings.JobDetailsPage_JobExpired, continuation.JobId)); #line default #line hidden WriteLiteral("</em></td>\r\n"); #line 150 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { #line default #line hidden WriteLiteral(" <td class=\"min-width\">"); #line 153 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobIdLink(continuation.JobId)); #line default #line hidden WriteLiteral("</td>\r\n"); WriteLiteral(" <td class=\"min-width\"><code>"); #line 154 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(continuation.Options.ToString("G")); #line default #line hidden WriteLiteral("</code></td>\r\n"); WriteLiteral(" <td class=\"min-width\">"); #line 155 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.StateLabel(jobData.State)); #line default #line hidden WriteLiteral("</td>\r\n"); WriteLiteral(" <td class=\"word-break\">"); #line 156 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.JobNameLink(continuation.JobId, jobData.Job)); #line default #line hidden WriteLiteral("</td>\r\n"); WriteLiteral(" <td class=\"align-right\">"); #line 157 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.RelativeTime(jobData.CreatedAt)); #line default #line hidden WriteLiteral("</td>\r\n"); #line 158 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </tr>\r\n"); #line 160 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </tbody>\r\n </table>\r\n " + " </div>\r\n"); #line 164 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } } #line default #line hidden WriteLiteral(" <h3>\r\n"); #line 168 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (job.History.Count > 1) { #line default #line hidden WriteLiteral(" <span class=\"job-snippet-buttons pull-right\">\r\n"); #line 171 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <button class=\"btn btn-sm btn-default\"\r\n " + " data-ajax=\""); #line 174 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Url.To("/jobs/actions/requeue/" + JobId)); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 175 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Enqueueing); #line default #line hidden WriteLiteral("\">\r\n "); #line 176 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.JobDetailsPage_Requeue); #line default #line hidden WriteLiteral("\r\n </button>\r\n"); #line 178 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden #line 179 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (!IsReadOnly) { #line default #line hidden WriteLiteral(" <button class=\"btn btn-sm btn-death\"\r\n " + " data-ajax=\""); #line 182 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Url.To("/jobs/actions/delete/" + JobId)); #line default #line hidden WriteLiteral("\"\r\n data-loading-text=\""); #line 183 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Deleting); #line default #line hidden WriteLiteral("\"\r\n data-confirm=\""); #line 184 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.JobDetailsPage_DeleteConfirm); #line default #line hidden WriteLiteral("\">\r\n "); #line 185 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.Common_Delete); #line default #line hidden WriteLiteral("\r\n </button>\r\n"); #line 187 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </span>\r\n"); #line 189 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral("\r\n "); #line 191 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Strings.JobDetailsPage_State); #line default #line hidden WriteLiteral("\r\n </h3>\r\n"); #line 193 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" var index = 0; foreach (var entry in job.History) { var accentColor = JobHistoryRenderer.GetForegroundStateColor(entry.StateName); var backgroundColor = JobHistoryRenderer.GetBackgroundStateColor(entry.StateName); #line default #line hidden WriteLiteral(" <div class=\"state-card\" style=\""); #line 201 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(index == 0 ? $"border-color: {accentColor}" : null); #line default #line hidden WriteLiteral("\">\r\n <h4 class=\"state-card-title\" style=\""); #line 202 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(index == 0 ? $"color: {accentColor}" : null); #line default #line hidden WriteLiteral("\">\r\n <small class=\"pull-right text-muted\">\r\n"); #line 204 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (index == job.History.Count - 1) { #line default #line hidden #line 206 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.RelativeTime(entry.CreatedAt)); #line default #line hidden #line 206 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { var duration = Html.ToHumanDuration(entry.CreatedAt - job.History[index + 1].CreatedAt); if (index == 0) { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 214 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.RelativeTime(entry.CreatedAt)); #line default #line hidden WriteLiteral(" ("); #line 214 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(duration); #line default #line hidden WriteLiteral(")\r\n"); #line 215 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } else { #line default #line hidden WriteLiteral(" "); WriteLiteral(" "); #line 218 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(Html.MomentTitle(entry.CreatedAt, duration)); #line default #line hidden WriteLiteral("\r\n"); #line 219 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } } #line default #line hidden WriteLiteral(" </small>\r\n\r\n "); #line 223 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(entry.StateName); #line default #line hidden WriteLiteral("\r\n </h4>\r\n\r\n"); #line 226 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (!String.IsNullOrWhiteSpace(entry.Reason)) { #line default #line hidden WriteLiteral(" <p class=\"state-card-text text-muted\">"); #line 228 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(entry.Reason); #line default #line hidden WriteLiteral("</p>\r\n"); #line 229 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral("\r\n"); #line 231 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" var rendered = Html.RenderHistory(entry.StateName, entry.Data); #line default #line hidden WriteLiteral("\r\n"); #line 235 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" if (rendered != null) { #line default #line hidden WriteLiteral(" <div class=\"state-card-body\" style=\""); #line 237 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(index == 0 ? $"background-color: {backgroundColor}" : null); #line default #line hidden WriteLiteral("\">\r\n "); #line 238 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" Write(rendered); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 240 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n"); #line 242 "..\..\Dashboard\Pages\JobDetailsPage.cshtml" index++; } } #line default #line hidden WriteLiteral(" </div>\r\n</div>"); }