コード例 #1
0
ファイル: Client.cs プロジェクト: to11mtm/OddJob
        static public IControlBody Main()
        {
            var rvInput   = Var.Create(new JobSearchCriteria());
            var submit    = Submitter.CreateOption(rvInput.View);
            var vReversed =
                submit.View.MapAsync(input =>
            {
                if (input == null)
                {
                    return(Task.FromResult(""));
                }
                return(Remoting.DoSomething(input.Value));
            });

            return(div(
                       input(rvInput),
                       button("Send", submit.Trigger),
                       hr(),
                       h4(
                           attr.@class("text-muted"),
                           "The server responded:",
                           div(
                               attr.@class("jumbotron"),
                               h1(vReversed)
                               )
                           )
                       ));
        }
コード例 #2
0
ファイル: Client.cs プロジェクト: to11mtm/OddJob
        private static async Task <Elt> CreateSearchResults(FSharpOption <JobSearchCriteria> input, Var <IEnumerable <string> > methodCriteria, ListModel <string, JobUpdateViewModel> updateSet, Doc result)
        {
            if (input == null)
            {
                return(div(""));
            }
            var methodOptionFuture   = Remoting.GetMethods(input.Value.QueueName);
            var awaitedMethodOptions = await methodOptionFuture;

            methodCriteria.Value = awaitedMethodOptions;
            var future        = Remoting.SearchCriteria(input.Value);
            var awaitedFuture = await future;


            updateSet.Set(awaitedFuture.Select(q =>
            {
                return(new JobUpdateViewModel()
                {
                    JobGuid = q.JobId,
                    MetaData = q,
                    UpdateData = new UpdateForJob()
                    {
                        JobGuid = q.JobId,
                        OldStatus = q.Status,
                        ParamUpdates = q.JobArgs.Select(r => new UpdateForParam()
                        {
                            ParamOrdinal = r.Ordinal
                        }).ToArray()
                    }
                });
            }));


            return(div(h3("Results:"), br(), doc(result)));
        }
コード例 #3
0
ファイル: Client.cs プロジェクト: to11mtm/OddJob
        public static IControlBody Main()
        {
            //var myList = Var.Create<IEnumerable<string>>(Remoting.GetQueueNameList());
            var criteria     = Var.Create(new JobSearchCriteria());
            var useQueueLens = criteria.Lens(q => q.UseQueue, (a, b) =>
            {
                a.UseQueue = b;
                return(a);
            });
            var statusLens = criteria.Lens(q => q.Status, (a, b) =>
            {
                a.Status = b;
                return(a);
            });
            var useStatus = criteria.Lens(q => q.UseStatus, (a, b) =>
            {
                a.UseStatus = b;
                return(a);
            });
            var methodLens = criteria.Lens(q => q.MethodName, (a, b) =>
            {
                a.MethodName = b;
                return(a);
            });
            var useMethod = criteria.Lens(q => q.UseMethod, (a, b) =>
            {
                a.UseMethod = b;
                return(a);
            });
            var statusOptions = Var.Create <IEnumerable <string> >(new[]
            {
                null, "Processed", "New", "Failed",
                "Retry", "InProgress", "Inserting"
            });
            var dummyQueueCriteriaFiller = Var.Create("");
            var criteriaFiller           = Submitter.CreateOption(dummyQueueCriteriaFiller.View);
            var updateSet     = new ListModel <string, JobUpdateViewModel>(q => q.JobGuid.ToString());
            var queueNames    = Var.Create <IEnumerable <string> >(new string[] { null });
            var queueNameView = criteriaFiller.View.MapAsync(async input =>
            {
                queueNames.Value = await Remoting.GetQueueNameList();
                return(queueNames.Value);
            });

            criteriaFiller.Trigger();

            var methodCriteria = Var.Create <IEnumerable <string> >(new string[] { null });
            var submit         = Submitter.CreateOption(criteria.View);
            var result         = updateSet.Doc(juvm =>
            {
                var map            = updateSet.Lens(juvm.JobGuid.ToString());
                var myUpdateItem   = Var.Create(div());
                var jobParamUpdate = juvm.UpdateData.ParamUpdates.Select((updateDateParamUpdate, i) =>
                {
                    return(CreateParamterUpdateElement(map, i, juvm));
                }).ToArray();
                var newMethodName = map.Lens(uvm => uvm.UpdateData.NewMethodName, (a, b) =>
                {
                    a.UpdateData.NewMethodName = b;
                    return(a);
                });
                var updateMethodName = map.Lens(uvm => uvm.UpdateData.UpdateMethodName, (a, b) =>
                {
                    a.UpdateData.UpdateMethodName = b;
                    return(a);
                });
                var updateStatus = map.Lens(uvm => uvm.UpdateData.UpdateStatus, (a, b) =>
                {
                    a.UpdateData.UpdateStatus = b;
                    return(a);
                });
                var newStatus = map.Lens(uvm => uvm.UpdateData.NewStatus, (a, b) =>
                {
                    a.UpdateData.NewStatus = b;
                    return(a);
                });
                var updateQueue = map.Lens(uvm => uvm.UpdateData.UpdateQueueName, (a, b) =>
                {
                    a.UpdateData.UpdateQueueName = b;
                    return(a);
                });
                var newQueue = map.Lens(uvm => uvm.UpdateData.NewQueueName, (a, b) =>
                {
                    a.UpdateData.NewQueueName = b;
                    return(a);
                });
                var updateMaxRetryCount = map.Lens(uvm => uvm.UpdateData.UpdateRetryCount, (a, b) =>
                {
                    a.UpdateData.UpdateRetryCount = b;
                    return(a);
                });
                var newMaxRetryCount = map.Lens(uvm => uvm.UpdateData.NewMaxRetryCount, (a, b) =>
                {
                    a.UpdateData.NewMaxRetryCount = b;
                    return(a);
                });
                var blurFilter    = Var.Create("");
                var disableUpdate = Var.Create(false);
                var disabledVar   = Var.Create("Disabled");
                var disabledColor = Var.Create("");
                return(div(style("display", "grid"), style("grid-template-columns", "50% 50%"), style("filter", blurFilter.View), style("background", disabledColor.View),
                           div(
                               new Jobitem.JobItem().MethodName(juvm.MetaData.MethodName).QueueName(juvm.MetaData.Queue)
                               .Status(juvm.MetaData.Status)
                               .JobGuid(juvm.MetaData.JobId.ToString()).Doc()
                               ),
                           div(
                               div(
                                   div(ElementCreators.CheckableTextInput("Status", updateStatus, newStatus,
                                                                          juvm.MetaData.Status)),
                                   div(ElementCreators.CheckableTextInput("MethodName", updateMethodName, newMethodName,
                                                                          juvm.MetaData.MethodName)),
                                   div(ElementCreators.CheckableTextInput("QueueName", updateQueue, newQueue,
                                                                          juvm.MetaData.Queue)),
                                   div(ElementCreators.CheckableNumberInput("MaxRetryCount", updateMaxRetryCount,
                                                                            newMaxRetryCount,
                                                                            juvm.MetaData.RetryParameters.MaxRetries))
                                   )
                               ),
                           //TODO: This looks bad with lots of Parameters.
                           div(div(juvm.MetaData.JobArgs.Select((r, i) =>
                                                                div(new Jobparameter.JobParameter().Type(r.Type).Name(r.Name).Value(r.Value)
                                                                    .Ordinal(i.ToString()).Doc())).ToArray())),
                           div(style("margin-left", "5%"), div(jobParamUpdate)),
                           button("Update", async() =>
                {
                    if (juvm == null)
                    {
                        myUpdateItem.Value = div("");
                    }

                    var success = await PerformJobUpdate(juvm);
                    if (success)
                    {
                        myUpdateItem.Value = div("Updated");
                        blurFilter.Value = "blur(1px)";
                        disabledColor.Value = "lightgrey";
                        disableUpdate.Value = true;
                    }
                    else
                    {
                        myUpdateItem.Value = div("Failed update");
                    }
                }, attr.disabled(disabledVar.View, disableUpdate.View)),
                           div(myUpdateItem)
                           ));
            });
            var results = submit.View.MapAsync(async input =>
            {
                return(await CreateSearchResults(input, methodCriteria, updateSet, result));
            });

            var queueNameLens = criteria.Lens(q => q.QueueName, (a, b) =>
            {
                a.QueueName = b;
                return(a);
            });
            var useCreatedLens = criteria.Lens(q => q.useCreatedDate, (a, b) =>
            {
                a.useCreatedDate = b;
                return(a);
            });
            var createdBeforeDateLens = criteria.Lens(q => q.createdBefore, (a, b) =>
            {
                a.createdBefore = b;
                return(a);
            });
            var createdAfterDateLens = criteria.Lens(q => q.createdAfter, (a, b) =>
            {
                a.createdBefore = b;
                return(a);
            });
            var createdBeforeTimeLens = criteria.Lens(q => q.createdBeforeTime, (a, b) =>
            {
                a.createdBeforeTime = b;
                return(a);
            });
            var createdAfterTimeLens = criteria.Lens(q => q.createdAfterTime, (a, b) =>
            {
                a.createdAfterTime = b;
                return(a);
            });
            var useAttemptedDTLens = criteria.Lens(q => q.useLastAttemptDate, (a, b) =>
            {
                a.useLastAttemptDate = b;
                return(a);
            });
            var lastExecutedBeforeTimeLens = criteria.Lens(q => q.attemptedBeforeTime, (a, b) =>
            {
                a.attemptedBeforeTime = b;
                return(a);
            });
            var lastExecutedBeforeDateLens = criteria.Lens(q => q.attemptedBeforeDate, (a, b) =>
            {
                a.attemptedBeforeDate = b;
                return(a);
            });
            var lastExecutedAfterTimeLens = criteria.Lens(q => q.attemptedAfterTime, (a, b) =>
            {
                a.attemptedAfterTime = b;
                return(a);
            });
            var lastExecutedAfterDateLens = criteria.Lens(q => q.attemptedAfterDate, (a, b) =>
            {
                a.attemptedAfterDate = b;
                return(a);
            });
            var content = div(div(style("width", "100%"),
                                  div(ElementCreators.OptionSearch("Queue Name", queueNameLens, queueNameView, useQueueLens, (r, e) => submit.Trigger()),
                                      ElementCreators.TextSearch("Method Name", methodLens, useMethod),
                                      ElementCreators.OptionSearch("Status", statusLens, statusOptions.View, useStatus,
                                                                   (a, b) => submit.Trigger()),
                                      ElementCreators.OptionSearch("Method", methodLens, methodCriteria.View, useMethod,
                                                                   (a, b) => submit.Trigger()),
                                      ElementCreators.DateTimeRangeSearch("Created", useCreatedLens, createdBeforeDateLens,
                                                                          createdBeforeTimeLens, createdAfterDateLens, createdAfterTimeLens),
                                      ElementCreators.DateTimeRangeSearch("Attempt", useAttemptedDTLens, lastExecutedBeforeDateLens,
                                                                          lastExecutedBeforeTimeLens, lastExecutedAfterDateLens, lastExecutedAfterTimeLens),
                                      div(button("Search", submit.Trigger)))),
                              div(br()),
                              div(style("overflow-y", "scroll"), results)
                              );

            return(content);
        }
コード例 #4
0
ファイル: Client.cs プロジェクト: to11mtm/OddJob
 public static async Task <bool> PerformJobUpdate(JobUpdateViewModel juvm)
 {
     return(await Remoting.UpdateJob(juvm));
 }