Example #1
0
        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);
        }
Example #4
0
        /// <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);
        }
Example #7
0
        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);
        }
Example #8
0
        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>");
        }
Example #9
0
        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>    ");
        }
Example #10
0
        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");
        }
Example #11
0
        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
        }
Example #13
0
        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");


        }
Example #14
0
        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");
        }
Example #15
0
        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>    ");
        }
Example #17
0
        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>    ");
        }
Example #19
0
        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>    ");
        }
Example #20
0
        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>");
        }